将 django 与 aiohttp/asyncio 集成

joh*_*ohn 6 python django asynchronous python-asyncio aiohttp

我想将 django 与 aiohttp/asyncio 集成以进行异步编程和 websockets 处理。我知道 django 有 celery 和 django-channels 来分别执行异步任务和 websocket 服务器,但是 aiohttp 预先内置了异步和 websocket 服务器,我发现该框架在创建功能时比 celery/django 通道更具可扩展性和简单性到 webscraping(我不知道是否可以在 celery I 中进行 webscraping,还没有尝试过)。
并且它也完美支持异步和等待。

但我的问题是:我们如何在一个项目中同时实现 django 和 aiohttp?我们可以使用 aiohttp 服务器来代替使用 django 的开发服务器来为站点提供服务。

我们是否能够将 django 与 aiohttp 功能集成(例如让我们举个例子:如果我想将用户提交的输入的网站抓取到我的数据库中。我可以在获取网站并将以下网站发布到我的函数中时使用 await 调用吗?我的 django 数据库?或者将函数结果发布到另一个 django 函数?)

我想知道集成的缺点,如果有的话?

在发布您的答案时,请您发布一个示例实际集成示例,而不是通过 github 向我建议这些库。

Ray*_*nda 0

也许是时候考虑 Django >= 4.1 了,它已经内置了异步支持

\n

来自文档:

\n
\n

Django 支持编写异步 (\xe2\x80\x9casync\xe2\x80\x9d) 视图,如果您在 ASGI 下运行,还支持完全异步的请求堆栈。异步视图仍然可以在 WSGI 下工作,但会带来性能损失,并且无法高效地长时间运行请求。

\n
\n
\n

我们\xe2\x80\x99仍在致力于ORM和Django其他部分的异步支持。您可以期待在未来的版本中看到这一点。现在,您可以使用sync_to_async()适配器与Django的同步部分进行交互。还有一系列可供集成的异步原生 Python 库。

\n
\n