Es gibt zwei Dateien bezogen werden: backend_service.py und web_handler.pyThema kann nicht das Produkt in der Warteschlange erhält
in backend_service.py
job_queue = Queue.Queue(5)
def submit_job(job):
job_queue.put(job)
logger.info("Enqueue new Job: JobID:%d,queue size:%d" %(job.order_id,job_queue.qsize()))
def handle_photos():
while True:
if not job_queue.empty():
job = job_queue.get_nowait()
logger.info("---------got job:%d" %job.order_id)
print "======================I am a task================"
job_queue.task_done()
else:
logger.info("the queue is empty. will sleep 20 seconds:%d..." %job_queue.qsize())
time.sleep(20)
worker_thread = threading.Thread(target=handle_photos)
worker_thread.setDaemon(True)
worker_thread.start()
in web_handler.py (Web-App auf Basis von Web. py der hTTP-Anforderung zu behandeln. Der Web-Server ist uwsgi)
def GET():
job = Job()
backend_service.submit_job(job)
wird aufgerufen und job_queue.qsize
kann richtigen Wert in submit_job
f zurückkehren Salbung. Der Thread sagt jedoch immer, dass die Warteschlange leer ist.
Es sieht so aus, als ob der Thread unter dem Web-Service-Status nicht den richtigen Status der Warteschlange abrufen kann. Während ich die Logik mit Unit-Test getestet habe. Es kann korrekt funktionieren. Könnten Sie bitte überprüfen, wo ich falsch liege?
Wo wird das Objekt 'job_queue' in den Namespace web_handler übergeben? – dodell
Es gibt ein gutes Beispiel hier, muss Warteschlangenobjekt übergeben, wenn Thread aufgerufen wird. https://pymotw.com/2/Queue/ – dodell
@dodell, web_handler.py hängt nur von der Funktion submit_job ab. und auf die Warteschlange wird in der Funktion submit_job selbst zugegriffen. – WenJ