在线程中,我们有一个名为“线程上下文”的东西,我们可以在其中保存一些数据(状态)以便在特殊线程中访问。在asyncio中,我需要在当前执行路径中保存一些状态,以便所有后续的协程都可以访问它。解决办法是什么? 注意:我知道每个协程函数都为asyncio中的执行路径实例化,但出于某种原因,我无法在函数属性中保存状态。 (虽然这种方法反正不是很好)Python asyncio context
回答
你可以看看tasklocals
library。它引入了tasklocals.local
,如threading.local
多线程。
感谢哥们!我检查了源代码,发现我错过的魔法:Task.current_task() – Kamyar
这段代码是否与最近的Python版本兼容,因为这个库已经多年没有更新过了? –
是的,它是兼容的 –
还有https://github.com/azazel75/metapensiero.asyncio.tasklocal,但你必须知道的任务往往是由图书馆还通过使用ensure_future(a_coroutine)
而且也跟踪这些新的任务和初始化它们的当地人(也许这些任务没有实际的办法ASYNCIO内部创建的,他们从创建)。 (一个“黑客”来对子级设置loop.set_task_factory()
功能的东西,没有工作,希望所有的代码使用loop.create_task()
创建任务,这并非总是如此...)
的另一个问题是,如果你的一些代码在未来回调Task.current_task()
函数中执行,这两个函数库都使用这两个函数库来选择正确的本地服务副本将始终返回None
...
- 1. Python asyncio与Slack bot
- 2. Python asyncio简单示例
- 3. Python asyncio:可中断任务
- 4. Python asyncio培训练习
- 5. Python asyncio资源不可用
- 6. Python asyncio任务排序
- 7. Django视图中的Python Asyncio
- 8. Python的asyncio同步工作
- 9. Python asyncio等待线程
- 10. 从concurrent.futures到ASYNCIO
- 11. Python的ASYNCIO,期货收益率从
- 12. 的Python ASYNCIO子过程从未完成
- 13. 删除/销毁完成期货asyncio Python
- 14. Python asyncio使用线程池吗?
- 15. Python的asyncio的高可用性
- 16. 将任务添加到python asyncio
- 17. sqlalchemy scoped_session正确使用python asyncio
- 18. Python中的`os.chmod`的asyncio版本
- 19. 理解的Python ASYNCIO探查输出
- 20. Python - 与asyncio /协程的计时器
- 21. Python 3 - AsyncIO/APScheduler的全局变量
- 22. 使用Python ASYNCIO等待GPIO中断
- 23. 在Python中限制异步函数Asyncio
- 24. 可连接的PriorityQueue在python的ASYNCIO
- 25. 的Python ASYNCIO与difflib慢如蜗牛
- 26. Python asyncio-motor不能异步工作
- 27. 调试并列出未来在python asyncio
- 28. Kleisli [Future,Context,\ /] to Kleisli [EitherT,Context,...]
- 29. AppEventsLogger.deactivateApp(Context context)已弃用
- 30. ASYNCIO与INFO
[This python-ideas thread](https://mail.python .org/pipermail/python-ideas/2015-April/033151.html)和[此asyncio错误报告](https://github.com/python/asyncio/issues/165)似乎相关。 – dano
'curio'似乎有它https://github.com/dabeaz/curio/pull/85 –