不同服务器和芹菜上的Django和芹菜能够在任务完成后向django发送回调

Dea*_*ker 4 python django asynchronous rabbitmq celery

我有一个django项目,我使用芹菜和rabbitmq来执行一组异步.任务.所以我计划的设置是这样的.

  1. Django app在一台服务器上运行.
  2. 芹菜工人和rabbitmq从另一台服务器运行.

我最初的问题是,如何从另一台服务器上的芹菜任务访问django模型?

假设我无法访问Django模型,有没有办法完成任务,我可以发送一个回调到Django应用程序传递值,以便我可以根据传递的值更新Django的数据库?

小智 5

关于你的第一个问题,从工作服务器访问django模型:

您的django应用程序必须在服务器A(服务用户)和服务器B(托管芹菜工作者)上都可用

关于第二个问题,请根据值更新数据库.你的意思是异步任务的结果吗?如果是这样,那么你有两个选择:

  • 假设您可以访问数据库,您可以从任务本身中保存需要保存的任何内容.
  • 您可以使用结果后端(其中一个是通过Django ORM),如Celery关于保持结果的官方文档中所述