当前位置:  开发笔记 > 编程语言 > 正文

使用run_in_executor和asyncio时超时处理

如何解决《使用run_in_executor和asyncio时超时处理》经验,为你挑选了1个好方法。

我正在使用asyncio运行一段这样的阻塞代码:

result = await loop.run_in_executor(None, long_running_function)

我的问题是:我可以强制执行超时long_running_function吗?

基本上我不想long_running_function持续超过2秒,我不能在其中进行适当的超时处理,因为该功能来自第三方库.



1> Jashandeep S..:

关于取消长时间运行功能的警告:

虽然包裹Future退回通过loop.run_in_executorasyncio.wait_for通话将允许事件循环停止等待long_running_function一些之后x秒钟,它不一定会停止基础long_running_function.这是其中一个缺点,据concurrent.futures我所知,没有简单的方法可以取消一个concurrent.futures.Future.


不,它不能.取消执行程序不会将下一个任务安排到池中,但它不会停止已执行的作业.从字面上看,没有办法使用Python API优雅地停止线程.哈希方法存在,但它们非常不可靠,我不推荐它们.
推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有