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()
            = 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 in range(2):
                = ThreadGetHttpSqs()
                #t.setDaemon(True)
                t.start()
              
            for in range(2):
                = 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

最新文章

  1. Git学习笔记一:新建本地仓库及初始化
  2. webapi5
  3. jquery 通过ajax FormData 对象上传附件
  4. linux_shell_4_shell特性
  5. Fluent NHibernate关系映射
  6. SimpleUrlHandlerMapping 使用
  7. linux挂载文件
  8. Java 网络编程(二)
  9. 享元模式(咖啡屋)【java与模式】
  10. CentOS 6.4 64位 安装 apache-tomcat-6.0.43
  11. HTML select 操作
  12. MySQL测试环境遇到 mmap(xxx bytes) failed; errno 12解决方法
  13. git链接GitHub命令及基本操作
  14. Android Studio 查看手机CPU信息
  15. 全新定义!免费开源ERP平台如何玩转工业互联网
  16. Arduino内部网页代理,网页穿透,公网访问Arduino内部网页
  17. 5)django-模板
  18. 入坑tensorflow
  19. 18-10-16 IE 快捷键的组合方式
  20. windows 系统变量

热门文章

  1. ruby关于require路径
  2. c#QQ邮件编程学习(收发邮件)
  3. 使用GDI+保存带Alpha通道的图像(续)
  4. 使用maven打包额外的jar
  5. jmeter 历史版本下载
  6. Java运算符,位运算
  7. [转]java中byte转换int时为何与0xff进行与运算
  8. Java-Runoob:Java Character 类
  9. Joker的自动化之路
  10. WTL教程