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