1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
#!/usr/bin/python import sys,time,json,logging import Queue, threading, datetime from lib.base.daemon import Daemon from lib.queue.httpsqs.HttpsqsClient import HttpsqsClient from lib.db.DbMongodb import DbMongodb logging.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() #线程已经为永真循环,进程不能再循环 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 ) |
http://www.qytang.com/
http://www.qytang.com/cn/list/29/
http://www.qytang.com/cn/list/28/446.htm
http://www.qytang.com/cn/list/28/445.htm
http://www.qytang.com/cn/list/28/444.htm
http://www.qytang.com/cn/list/28/442.htm
http://www.qytang.com/cn/list/28/440.htm
http://www.qytang.com/cn/list/28/437.htm
http://www.qytang.com/cn/list/28/435.htm
http://www.qytang.com/cn/list/28/434.htm
http://www.qytang.com/cn/list/28/433.htm
http://www.qytang.com/cn/list/28/431.htm
http://www.qytang.com/cn/list/28/328.htm
http://www.qytang.com/cn/list/28/326.htm
http://www.qytang.com/cn/list/28/429.htm