1
私のプロジェクトでは、私が実行するタスクの一覧があります。asyncioのタスクトップアップ
loop.run_until_complete(tasks)
しかし、無限の数のタスクがあるので、現時点では、それらをバッチで実行します。私は、タスクの数、Iランチ非同期にこれらのタスクを実行するためにループを使用して結果を返す通常の関数を得る
def get_results(tasks):
return [result for result in loop.run_until_complete(handle_tasks(tasks))]
while True:
tasks = get_tasks()
results = get_results(tasks)
:基本的に、私はこれを持っています。
このアプローチは機能しますが、改善できると思います。
タスクのバッチを実行する代わりに、タスクのトップアップをしたいと思います。このような
何か:
while True:
if current_tasks < max_tasks:
new_tasks = get_tasks(max_tasks - current_tasks)
add_tasks(new_tasks)
current_tasks, results = stats_and_results()
私はこの問題にアプローチする方法上の任意のアイデアを感謝しています。
ありがとうございます!
タスクを 'my_task_list'に追加する方法と、リストが一定の長さよりも短い場合は追加する方法はありますか?次にリストを時々 'cancel()'や 'cancelled()'タスクを削除するために繰り返しますか? – shongololo