gpt4 book ai didi

Python/Django AMQP?

转载 作者:行者123 更新时间:2023-11-28 20:53:20 24 4
gpt4 key购买 nike

我有一个 Django 网络应用程序,它在数据库中创建和保存作业。对于每项工作,我都必须发送电子邮件并将数据导出到另一个系统。我想做异步。

执行此类任务的推荐方法是什么?

  • 它必须可靠(如果服务意外停止,则不会丢失任何工作)。
  • 如果出现问题,必须有简单的方法来查找日志。
  • 我希望能够轻松添加更多将处理作业的工作人员。

  • 也许如果作业队列是同一个数据库表会更好,这样我就可以通过简单地更改作业在数据库中的状态来轻松取消作业?

  • 如果解决方案与 Django 框架有某种关联,也许会更好?

最佳答案

我会考虑使用 http://celeryproject.org/在您的情况下,您可能会使用 https://github.com/ask/django-celery简化与现有应用程序的集成,尽管在 django 项目中自己使用 celery 也应该非常简单。

Celery 为应该在工作机器上异步运行的任务提供了一个基于函数/类的抽象。您可以拥有多台工作机器并动态添加工作人员。整个事情由 RabbitMQ (www.rabbitmq.com) 提供支持,因此您的 django 应用程序将通过基本上执行以下操作将任务放入队列:

from mycelerytasks import send_email

...

deferred_result = send_email.apply_async(*args, **kwargs)

如果您想等待任务完成,您可以执行 deferred_result.wait() 但在您的情况下,您可能只是丢弃它并让您的 View 完成,这样用户就不会等待答案。

关于Python/Django AMQP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5105279/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com