python 的thread很有问题呀;
uwsgi如果不开启thread模式,我在程序中创建的daemon线程只在请求中被执行(请求结束就不执行了),一个应用居然能影响到系统层面的thread,这在java是不可能的。看图:
但进程模式:
后台daemon thread不会自动运行。
至少以前uwsgi没有开启thread只靠进程跑慢的原因找到了,async里的线程全堵在哪里没有被执行。
测试代码:
t = DaemonMonitor(queue,checker)
t.setDaemon(True)
t.start()
class DaemonMonitor(threading.Thread):
def __init__(self,queue,checker):
threading.Thread.__init__(self)
self.queue = queue
self.checker = checker
def run(self):
while True:
now = datetime.datetime.now()
print 'daemon check sleep'
sleep(1)
print 'daemon check now+%s'%now