我正在运行uwsgi 2.0,并在nginx之上启用了线程。以下是一些相关设置:
processes = 8
enable-threads = true
threads = 4
master
lazy-apps
single-interpreter
socket-timeout = 30
listen = 1000
在python中,我的应用程序中有一个线程要从队列中使用,但是因为我从apache迁移到nginx / uwsgi,所以看起来消费者线程要花费的时间更长。似乎uwsgi没有给它给主线程的消费者线程提供相同的优先级:
def produce(self):
while True:
try:
item = self.queue.get_nowait()
self.producer(*item)
except Empty:
log.debug('Nothing to produce sleep .1 sec and continue')
time.sleep(0.1)
except Exception as e:
log.error('Producer error: {0}'.format(e))
我尝试了不同的睡眠设置和阻塞get(self.queue.get()),但事实是以前我没有apache / mod_wsgi的问题,put / get几乎同步
以下是初始化队列的代码:
def __init__(self, config, producer_type='producer'):
# import the producer module, factory and create instance with fabric param
self.producer = import_producer(producer_type, config)
self.queue = Queue()
self.process_thread = threading.Thread(target=self.produce)
self.process_thread.daemon = True
self.process_thread.start()
想知道我在这里做错了什么?性能很好就是这个排队问题。