【问题标题】:run Celery on same server as django?在与 django 相同的服务器上运行 Celery?
【发布时间】:2017-11-27 17:13:20
【问题描述】:

我在负载平衡的 Elastic Beanstalk 环境中运行我的 Django 应用程序。我想添加一个 Celery 守护进程来执行以下操作:

  • 在后台将文件上传到 S3 并向我的 Android 应用发送成功响应
  • 向用户发送短信,通知他们即将推出的 EMI(使用 celery beat)
  • 我的应用使用 Google Cloud vision 来实现某些功能,运行需要 10 秒,因此我可以在后台运行它

现在,我想知道在 Django 使用 Amazon SQS 运行的同一台服务器上部署 celery 是否正确?如果是,我该如何设置?

如果 Elastic Beanstalk 上的多个服务器会因为 celery beat 而导致重复任务?

【问题讨论】:

    标签: django django-celery amazon-elb celerybeat celeryd


    【解决方案1】:

    在哪里开始你的 celery 并不重要:在同一台服务器上或在不同的服务器上,两种方式都是正确的。 芹菜后端使用什么并不重要。如果您在所有 celery 之间使用一些共享的 redis 或数据库,那么任务就不会重复,但是如果每个 celery 都有自己的后端,那将会造成混乱和灾难。

    【讨论】:

    • 感谢您的回答。我担心的是 celery beat,它将被设计用于检查数据库(AWS RDS 实例)中属于该日期的条目,并基于该日期向它们发送通知。我觉得如果多个 celery beat 实例正在运行,它可能会导致重复通知。我正在使用 AWS SQS 进行消息队列,
    • 它可以在 SQS 上正常工作,并且如果您没有忘记在“执​​行”后删除消息并给消息适当的“重复时间”(我不知道它如何命名),它不会重复消息在 AWS 中正​​确)
    猜你喜欢
    • 1970-01-01
    • 2012-12-05
    • 2013-12-16
    • 2015-02-19
    • 1970-01-01
    • 1970-01-01
    • 2011-07-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多