我有一个生成任务(IO绑定的任务)的函数:
最初的回答:
def get_task():
while True:
new_task = _get_task()
if new_task is not None:
yield new_task
else:
sleep(1)
我正在尝试编写一个异步消费者,它将同时处理最多10个任务,当一个任务完成时,它会接受新任务。 我不确定是否应该使用信号量或是否有任何类型的asycio池执行程序?我开始用线程写伪代码:
我正在尝试编写一个在asyncio中每次处理最多10个任务的消费者,并在完成一个任务后立即开始处理下一个任务。我不确定是否应该使用信号量还是使用任何类型的asyncio池执行程序?我已经用线程开始写伪代码:
def run(self)
while True:
self.semaphore.acquire() # first acquire, then get task
t = get_task()
self.process_task(t)
def process_task(self, task):
try:
self.execute_task(task)
self.mark_as_done(task)
except:
self.mark_as_failed(task)
self.semaphore.release()
请问有人能帮忙吗?我不知道在哪里使用async/await关键字。
最初的回答: