python zookeeper 在 uwsgi中 watcher不生效

来源:互联网 发布:国泰安经济金融数据库 编辑:程序博客网 时间:2024/06/06 07:06
def code_watcher(handle,type, state, path):
    print "zk code watcher,path is: ",path
#data = zk.get(settings.ZKPATH_CODE,code_watcher)
    data = zookeeper.get(zk,settings.ZKPATH_CODE,code_watcher)
    code_json = json.loads(data[0])
    with open("./code_by_client.py",'w') as f:
        for line in code_json:
            f.write(line+'\n')
    reload(code_by_client) 


def generate_client_code():
    print "zk code,path is: ",settings.ZKPATH_CODE
#data = zk.get(settings.ZKPATH_CODE,code_watcher)
    data = zookeeper.get(zk,settings.ZKPATH_CODE,code_watcher) 
    code_json = json.loads(data[0])
    with open("./code_by_client.py",'w') as f:
        for line in code_json:

            f.write(line+'\n')


原因是uwsgi没有开启多线程,而我们调用的zookeeper.so是需要多线程的。


修改uwsgi配置,加上一行 <enable-threads>1</enable-threads>,如下,


<uwsgi>
  <!--
  <cluster>225.1.1.1:3333</cluster>
  <socket>192.168.60.*:3031</socket>
  <http>127.0.0.1:3031</http>
  -->
  <http>192.168.61.89:3456</http>
  <pythonpath>../</pythonpath>
  <module>service</module>
  <master>1</master>
  <processes>4</processes>
  <disable-logging />
  <daemonize>logs/uwsgi_bfdds.log</daemonize>
  <buffer-size>16384</buffer-size>
  <harakiri>5</harakiri>
  <pidfile>uwsgi_bfdds.pid</pidfile>
  <stats>127.0.0.1:3457</stats>
  <enable-threads>1</enable-threads>
</uwsgi>

0 0