【发布时间】:2017-07-11 18:12:22
【问题描述】:
我有一个使用 Queue 的 django 应用程序。
class DataThread (threading.Thread):
data_queue = Queue.Queue()
在另一个线程中,我将一些东西添加到队列中,如下所示
DataThread.data_queue.put(msg)
它正在以下列方式在 DataThread 中被消耗
while True:
self.sendMessagesFromQueue()
time.sleep(1)
def sendMessagesFromQueue(self):
try:
while not DataThread.data_queue.empty():
data = self.data_queue.get()
#Some processing logic
except Exception as e:
print str(e)
现在,当我使用python manage.py runserver(使用 django 本身)运行它时,它可以工作。
但是当我使用 gunicorn 运行这个应用程序时它不起作用。因为队列空检查一直返回它的空,但是当我在添加到队列的位置检查队列大小时,它会不断增加。
编辑:我什至检查了队列是否相同。它们具有相同的内存位置。另外我不确定这是否有帮助,但这些线程是在 gunicorn 开始之前创建的。我正在站点自定义中进行此操作。
【问题讨论】:
标签: django multithreading python-2.7 queue gunicorn