国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Python守護(hù)進(jìn)程(多線程開發(fā))

2019-11-14 17:43:58
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本段代碼主要作用是httpsqs隊(duì)列的消費(fèi)端守護(hù)進(jìn)程,從httpsqs中取出數(shù)據(jù),放入mongodb

#!/usr/bin/pythonimport sys,time,json,loggingimport Queue, threading, datetimefrom lib.base.daemon import Daemonfrom lib.queue.httpsqs.HttpsqsClient import HttpsqsClientfrom lib.db.DbMongodb import DbMongodblogging.basicConfig(level=logging.DEBUG,                format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',                datefmt='%a, %d %b %Y %H:%M:%S',                filename='myapp.log',                filemode='w')                queue = Queue.Queue()       httpsqs = HttpsqsClient('192.168.0.218','1218','httpsqs.com')db = DbMongodb('192.168.0.119','testdb')        class ThreadGetHttpSqs(threading.Thread):    def __init__(self):        threading.Thread.__init__(self)        self.httpsqs = httpsqs        self.queue = queue        def run(self):        while True:            data = self.httpsqs.get('logtest')            if data is not None:                self.queue.put(data)                logging.info('get:id %s , tablename %s' % (self.getName(),data))            else:                time.sleep(3)                                    class ThreadInsertDB(threading.Thread):    def __init__(self):        threading.Thread.__init__(self)        self.queue = queue        self.db = db            def run(self):        while True:            chunk = self.queue.get()            s = json.loads(chunk)            tablename = s['table']            data = s['data']            self.db.save(tablename,data)            logging.info('insert:id %s , tablename %s' % (self.getName(),tablename))            self.queue.task_done()            class MyDaemon(Daemon):    def _run(self):        while True:            for i in range(2):                t = ThreadGetHttpSqs()                #t.setDaemon(True)                t.start()                        for i in range(2):                b = ThreadInsertDB()                #t.setDaemon(True)                b.start()            #線程已經(jīng)為永真循環(huán),進(jìn)程不能再循環(huán)            time.wait()                                           if __name__ == "__main__":    daemon = MyDaemon('/tmp/daemon-example.pid')    if len(sys.argv) == 2:        if 'start' == sys.argv[1]:            daemon.start()        elif 'stop' == sys.argv[1]:            daemon.stop()        elif 'restart' == sys.argv[1]:            daemon.restart()        else:            PRint "Unknown command"            sys.exit(2)        sys.exit(0)    else:        print "usage: %s start|stop|restart" % sys.argv[0]        sys.exit(2)

 


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 宝坻区| 柳江县| 元朗区| 临澧县| 霞浦县| 沭阳县| 剑阁县| 石门县| 岳普湖县| 县级市| 班玛县| 界首市| 本溪| 闽侯县| 衢州市| 调兵山市| 青浦区| 保定市| 石河子市| 汝城县| 凯里市| 瓦房店市| 高陵县| 通化县| 连州市| 康平县| 鹤山市| 怀来县| 基隆市| 哈巴河县| 康保县| 永清县| 临朐县| 清水河县| 凤山市| 通海县| 泰州市| 綦江县| 广昌县| 绥滨县| 麻阳|