frcd 发表于 2015-11-21 14:14:15

python zookeeper 在 uwsgi中 watcher不生效

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)
    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)
    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>
页: [1]
查看完整版本: python zookeeper 在 uwsgi中 watcher不生效