Django与python ayncio一起执行后台任务

Django与python ayncio一起执行后台任务,python,django,python-asyncio,Python,Django,Python Asyncio,我有两个服务器,一个主服务器,提供RESTAPI来接受来自用户的数据并维护产品详细信息列表。此服务器还负责在产品更新/创建后立即与辅助服务器共享产品列表(产品数据的子集)。 还要注意,次要url取决于产品详细信息,而不是修复服务器 主服务器是用Django编写的。我使用django模型db信号作为产品更新、创建和删除事件。 现在的问题是,在主服务器REST调用将详细信息填充到辅助服务器之前,我不想阻塞它。我需要一些调度器的东西来做这件事,即创建一个任务来填充后台数据,而不阻塞我当前的线程 我发现

我有两个服务器,一个主服务器,提供RESTAPI来接受来自用户的数据并维护产品详细信息列表。此服务器还负责在产品更新/创建后立即与辅助服务器共享产品列表(产品数据的子集)。 还要注意,次要url取决于产品详细信息,而不是修复服务器

主服务器是用Django编写的。我使用django模型db信号作为产品更新、创建和删除事件。 现在的问题是,在主服务器REST调用将详细信息填充到辅助服务器之前,我不想阻塞它。我需要一些调度器的东西来做这件事,即创建一个任务来填充后台数据,而不阻塞我当前的线程

我发现PythonAsyncio模块附带了一个函数“run_in_executor”,到目前为止它一直在工作,但我不知道django在wsgi服务器上运行的副作用,有人能解释一下吗?或者其他替代品


我找到了django通道,但它需要额外的东西,如单独运行工作线程、redis缓存。

您应该使用django芹菜异步或在后台运行任务

芹菜是一个包含电池的任务队列。它易于使用,因此您可以在不了解它所解决问题的全部复杂性的情况下开始使用


您可以从

获得有关芹菜的更多信息。您应该使用Django芹菜异步或在后台运行任务

芹菜是一个包含电池的任务队列。它易于使用,因此您可以在不了解它所解决问题的全部复杂性的情况下开始使用


您可以从

不要在像Django这样的WSGI应用程序中运行后台任务获得更多关于芹菜的信息。使用任务队列(如Celery.my app)在azure中作为webapp部署,并且无法运行多个进程。尽量避免使用redis Cache假设你是一名驾驶教练,你的学生说:“我尽量避免使用方向盘。”。你会回答什么?这是一个很好的答案,但我要求的是一个案例,我驾驶一辆汽车,并要求提供自动驾驶功能,这样我就可以完成我的食物,而不是在像Django这样的WSGI应用程序中运行后台任务。使用任务队列(如Celery.my app)在azure中作为webapp部署,并且无法运行多个进程。尽量避免使用redis Cache假设你是一名驾驶教练,你的学生说:“我尽量避免使用方向盘。”。你会回答什么?这是一个很好的答案,但我要求的是一个案例,我驾驶一辆汽车,并要求提供自动驾驶功能,以便我可以在azure中完成我的foodmy应用程序部署为webapp,并且无法运行多个进程。并尽量避免使用redis缓存。您可以使用Azure提供的分离redis缓存,即Azure缓存。我可以从中获得更多详细信息,但会对成本和部署依赖性产生副作用。任何替代方案,如在django app ready()中打开单独的线程。并在此线程内运行一个事件循环。但我也不知道有什么副作用。虽然这也可以使用。我的应用程序在azure中部署为webapp,无法运行多个进程。并尽量避免使用redis缓存。您可以使用Azure提供的分离redis缓存,即Azure缓存。我可以从中获得更多详细信息,但会对成本和部署依赖性产生副作用。任何替代方案,如在django app ready()中打开单独的线程。并在此线程内运行一个事件循环。但我也不知道有什么副作用。虽然这也在起作用。