Сценарий:
# readQ is a queue
# threaded_func is used via python threading
def threaded_func(readQ):
while True:
taskval=readQ.get()
# some unknown error happens here throwing some exception
# this causes thread to exit at this point
# this also means readQ.task_done below is never called for that readQ.get
readQ.task_done()
Итак, если элемент очереди был прочитан, но task_done не вызван, а поток умер, есть ли способ проверить:
- элементов в очереди, которые были «извлечены», но не завершены
- Сколько времени они были «извлечены» без task_done?
- Можно ли отключить такие задачи и поставить их обратно? в «доступном» режиме?