Kelvin DeCosta
02/22/2023, 9:38 AMasync tasks, either via .submit or .map, I've found that using a SequentialTaskRunner causes the flow to run much faster than using ConcurrentTaskRunner.
I'd like to know more about this behavior.
Any feedback is appreciated!Peyton Runyan
02/22/2023, 4:58 PMSequentialTaskRunner currently submits asynchronously, not sequentially, on map. That's going to be changed soon. But I don't know why it would be fasterPeyton Runyan
02/22/2023, 6:28 PMPeyton Runyan
02/22/2023, 6:35 PM.submit? I can't reproduce thisKelvin DeCosta
02/23/2023, 7:18 AMasync tasks with .submit or .map, seems to be faster when using a SequentialTaskRunner instead of the default.
@task(
name="Greet",
task_run_name="{name}",
)
async def greet(name: str) -> str:
message = f"Hello, {name}!"
await asyncio.sleep(2)
print(message)
return message
@flow(
name="Multi Greeter",
task_runner=SequentialTaskRunner(),
)
async def multi_greeter():
names = [
"Kelvin",
"Peyton",
]
message_states = await greet.map(name=names, return_state=True)
messages = await asyncio.gather(
*[state.result(fetch=True) for state in message_states if state.is_completed()]
)
@flow(name="Main")
def main():
multi_greeter()
if __name__ == "__main__":
main()
Running this locally, with and without SequentialTaskRunner , produces runs with different run durations. Adding more names makes this difference largerJacob Danovitch
02/28/2023, 5:03 PM