Lor*_*ore 2 python asynchronous tornado python-3.x scheduledexecutorservice
我对龙卷风还很陌生。我无法理解使用run_on_executor和定义async方法之间的区别。是一样的吗?一个是多线程的,另一个不是?
先感谢您。
run_on_executor用于与阻塞非异步代码交互。
您是正确的,异步代码仅在单个线程中执行。也许有一个例子可以说明这一点。
假设您的 Tornado Web 服务与一个库交互,该库用于requests获取给定 IP 地址的国家/地区信息。由于requests它是一个非异步库,调用此函数将阻止 Tornado 事件循环。
因此,您有两个选择:尝试找到异步兼容的库的替代品,或者在不同的线程/进程中运行阻塞代码,并让事件循环await其结果,就像正常的异步代码一样,而不阻塞事件循环。后一个选项run_on_executor允许您在不同的线程或进程中运行任务,并且 asyncio 将“等待”其完成。
| 归档时间: |
|
| 查看次数: |
860 次 |
| 最近记录: |