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)