RabbitMQ 上的 Heroku、Django 和 celery

Posted

技术标签:

【中文标题】RabbitMQ 上的 Heroku、Django 和 celery【英文标题】:Heroku, Django and celery on RabbitMQ 【发布时间】:2012-09-11 16:18:45 【问题描述】:

我正在 Heroku 上构建一个 Django 项目。 我知道 gunicorn 被推荐作为网络服务器,所以我需要一个事件循环类型的 worker,我为此使用 gevent。 似乎猴子修补 gevent 为我完成了大部分工作,所以我可以有并发,但是我应该如何在没有真正线程或堵塞整个循环的情况下连接到 RabbitMQ?

我对此感到困惑,因为 Heroku 自己推荐 gunicorn、celery 和 RabbitMQ,但我不明白所有这些如何协同工作。

【问题讨论】:

Gunicorn 和 Celery 可以使用 gevent。您可以在他们的文档中找到它。 我看到 gevent 仅在标题中提及,这并不意味着客户端和/或传输支持此功能。能否请您参考一个官方支持 gevent 的 RabbitMQ 客户端? 【参考方案1】:

你知道芹菜和独角兽有不同的用途吗?

Gunicorn 是响应用户请求的网络服务器,为他们提供网页或 JSON 数据。

Celery 是一个异步任务管理器,即它允许您运行任意 python 代码,而不管对您的服务器的 Web 请求。

你了解这种区别吗?

【讨论】:

也许不是。我认为您可以通过在设置文件中设置一个变量来将 celery 与 gevent 模式一起使用。

以上是关于RabbitMQ 上的 Heroku、Django 和 celery的主要内容,如果未能解决你的问题,请参考以下文章

未执行的任务(Django + Heroku + Celery + RabbitMQ)

Celery + RabbitMQ +“发生套接字错误”

Django/Celery 和 CloudAMQP/Heroku 的连接错误

Heroku 上的 Django - 损坏的管理静态文件

Heroku 上的 Django 静态文件

在 Heroku 上的 Django 应用中启用 CORS