带有python ayncio的Django执行后台任务

时间:2019-03-29 04:32:49

标签: python django python-asyncio

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

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

我发现python asyncio模块附带了一个函数'run_in_executor',并且一直工作到现在,但是我不了解在wsgi服务器中运行的django的副作用,有人可以解释吗?或其他任何替代方法?

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

1 个答案:

答案 0 :(得分:0)

您应该使用Django Celery异步或在后台运行Task。

Celery是包含电池的任务队列。它易于使用,因此您无需了解所解决问题的全部复杂性即可开始使用。

您可以从http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html#first-steps

获取有关芹菜的更多信息。