我想整合django和aiohtp/asyncio来进行异步编程和websockets处理。我知道django有celery 和django-channels来分别处理异步任务和websockets服务器,但是aiohtp已经预先内置了异步和websockets服务器,我发现这个框架更容易扩展。与celery /django频道相比,同时创建了一个网页抓取功能(我不知道网页抓取是否可以在celery 中实现,我还没有尝试过)。
它还支持异步和等待完美。
但我的问题是:如何在一个项目中同时实现django和aiohttp呢?我们可以使用aiohttp服务器来服务网站,而不是使用django的开发服务器。
我们是否能够将django与aiohttp函数集成在一起(例如:如果我想抓取用户提交到我数据库中的网站,我可以在函数中使用await调用来获取网站并将以下网站发布到我的django数据库中吗?或者将函数结果发布到另一个django函数中吗?
而且我想知道整合的缺点,如果有的话?
在发布你的答案的时候,你能不能发布一个集成的实际例子,而不是建议我在github上使用那些库。
1条答案
按热度按时间jgwigjjp1#
也许是时候考虑Django〉= 4.1了,它已经内置了异步支持
来自文档:
Django支持编写异步(async)视图,如果你在ASGI下运行,它还支持一个完全支持异步的请求栈。异步视图在WSGI下仍然可以工作,但是会有性能损失,并且不能有高效的长时间运行的请求。
我们还在为ORM和Django的其他部分提供异步支持。你可以期待在未来的版本中看到这一点。现在,你可以使用sync_to_async()适配器与Django的同步部分交互。还有一系列的异步原生Python库可以与之集成。