Ich habe eine Django-App, in der ich Queue verwende.Warteschlange ist leer, obwohl es darin Elemente gibt
class DataThread (threading.Thread):
data_queue = Queue.Queue()
In einem anderen Thread ich Sachen wie
unten in die Warteschlange wird hinzugefügt habenDataThread.data_queue.put(msg)
Und es in DataThread in der unten Art und Weise
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)
nun diese Arbeiten verbraucht wird wenn ich es mit python manage.py runserver
(mit Django selbst) ausführen. Aber es funktioniert nicht, wenn ich gunicorn verwende, um diese App zu starten. Da der Check der Warteschlange leer bleibt, wird er leer zurückgegeben, aber wenn ich die Warteschlangengröße an dem Standort überprüfe, den ich zur Warteschlange hinzufüge, baut er sich weiter auf.
EDIT: Ich habe sogar überprüft, ob die Warteschlangen gleich sind. Sie haben die gleichen Speicherorte. Ich bin mir auch nicht sicher, ob das hilft, aber diese Threads werden erstellt, bevor Gunicorn startet. Ich mache dies in einer Sitecustomize.