在線程中,我們有一個名爲「線程上下文」的東西,我們可以在其中保存一些數據(狀態)以便在特殊線程中訪問。在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 –