gpt4 book ai didi

python - Tornado 在执行器中运行和定义异步方法之间的区别

转载 作者:行者123 更新时间:2023-12-01 21:28:12 25 4
gpt4 key购买 nike

我是 Tornado 的新手。我无法理解使用 run_on_executor 和定义 async 方法之间的区别。是一样的吗?一个是多线程的,另一个不是?

提前谢谢你。

最佳答案

run_on_executor 用于连接阻塞的非异步代码。

您说得对,异步代码仅在单个线程中执行。也许一个例子可以说明这一点。

假设您的 Tornado 网络服务与一个库接口(interface),该库使用 requests 来获取给定 IP 地址的国家/地区信息。由于 requests 是一个非异步库,调用此函数会阻塞 Tornado 事件循环。

因此,您有两个选择:尝试找到异步兼容的库的替代品,或者在不同的线程/进程中运行阻塞代码,并让您的事件循环 await 其结果类似于对于不阻塞事件循环的普通异步代码。后一个选项是 run_on_executor,它允许您在不同的线程或进程中运行任务,asyncio 将“等待”它的完成。

关于python - Tornado 在执行器中运行和定义异步方法之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62791646/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com