gpt4 book ai didi

python-asyncio - 如何使用 asyncio 接口(interface)阻塞和非阻塞代码

转载 作者:行者123 更新时间:2023-12-04 06:53:41 30 4
gpt4 key购买 nike

我正在尝试在事件循环之外使用协程函数。 (在这种情况下,我想在 Django 中调用一个也可以在事件循环中使用的函数)

如果不使调用函数成为协程,似乎没有办法做到这一点。

我意识到 Django 是为阻塞而构建的,因此与 asyncio 不兼容。尽管我认为这个问题可能会帮助正在过渡或使用遗留代码的人。

就此而言,它可能有助于理解异步编程以及为什么它不适用于阻塞代码。

最佳答案

经过大量研究,我认为这些解决方案可能会有所帮助:

  • 更新您的旧代码以使用 asyncio :

    是的,我知道这可能是艰难而痛苦的,但这可能是最明智的选择。如果你想像我一样使用 Django……好吧,你有很多工作要做才能使 Django 异步。我不确定这是否可能,但我发现至少有一次尝试:https://github.com/aaugustin/django-c10k-demo (尽管,作者在 youtube 视频中解释了所有缺点)。
  • 使用 asyncio.async 或 asyncio.Task :

    这些项目将使您能够在阻塞代码中运行异步操作,但这里的缺点是您将无法等待它们完成而不做一些丑陋的事情,比如检查 future 是否已经完成的 while 循环......呃,但是如果您不需要结果,那可能对您有用。
  • 关于python-asyncio - 如何使用 asyncio 接口(interface)阻塞和非阻塞代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23898363/

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