Без причины, даже после того, как я поместил некоторые элементы в очередь, он все равно показывает мне
Queue.empty() == True
Рабочие работают с использованием процесса, отличного от процесса Flask.Если я пытаюсь добавить элемент в очередь с помощью какой-либо подпрограммы Flask, а затем проверяю, не является ли очередь пустой (при помощи другой подпрограммы Flask), я вижу, что очередь заполнена.Но я все еще получаю "очередь пуста" из подпункта workerJob
.
from multiprocessing import Queue, Process, Pool
imgQueue = Queue()
@app.route("/send", methods=["POST"])
def sendToQueue():
# global imgQueue
imgLocation = request.headers.get('fileLocation')
nImage = request.data
imgQueue.put({"location": imgLocation,
"image": nImage})
return "ok"
def workerJob(q):
while True:
print(q.empty())
if (not q.empty()):
itemFromQueue = q.get()
print(str(type(itemFromQueue)))
print(itemFromQueue["location"])
print(itemFromQueue["image"])
else:
print("Queue empty")
time.sleep(3)
def startWorkers():
global imgQueue
while True:
procs = [Process(target=workerJob, args=(imgQueue,)) for i in range(1)]
for p in procs:
p.start()
def flaskThread():
app.run(host='0.0.0.0', threaded=True)
if __name__ == '__main__':
# app.run(host='0.0.0.0', threaded=True)
flaskProcess = Process(target=flaskThread, args=())
flaskProcess.start()
workerProcess = Process(target=startWorkers, args=())
workerProcess.start()