我正在以作者、标题等身份下载数据。我想一次只下载两本书,所以我为每本书创建一个任务。下载完成后我需要知道。
如果我使用queue.join(),我会知道任务何时完成,但我必须等待这两个任务,相反,我想在工作人员“空闲”后立即将新项目放入队列中。
我如何知道工人何时可以获取新物品?
在下面,您可以找到一些代码来解释我正在尝试做的事情:
nTasks = 2
async def worker(name):
while True:
#Wait for new book item
queue_item = await queue_.get()
#Starts to download author, title etc...
loop = asyncio.get_event_loop()
task = loop.create_task(download_books(queue_item, file))
queue_.task_done()
async def main():
try:
#We create 2 task at once
count = 0
while ( count < nTasks):
#Gets the book file name
mediaGet = ....
#Put on queue
await queue_.put(mediaGet)
#Next download
count = count + 1
contaTask = 0
#Wait until tasks are finished
await queue_.join()