Heroku不再支持Celery了吗?

时间:2013-03-07 07:21:39

标签: python heroku celery amqp

我终于到了我有空闲时间的地步,并希望将Celery添加到我在Heroku上的Python / Flask项目中。然而,几乎所有提到的Herlery文件中的芹菜都没了。在“Django入门”中曾经有过一篇关于tutotial的文章,但它已经消失了。

“只是这样做”我自己会工作吗?什么是一个很好的AMQP插件用作Heroku的后端?

5 个答案:

答案 0 :(得分:56)

我是Heroku的Python用户。

芹菜仍然得到完全支持。 Django指南底部的文档已被删除,因为它与最新版本的Celery(v3.0)已经过时,在我看来相当不完整。

我目前正在开发一个新的Dev Center article,深入探讨如何充分利用Celery。它应该很快发布。

至于队列插件 - 我是CloudAMPQ的粉丝。

答案 1 :(得分:3)

他们似乎改变了文档。不确定芹菜不再受支持,因为它只是一个python包而你可以安装它。

以下是关于how to get started with Django的文件(没有上次我看过芹菜的部分)。他们似乎现在使用RQ去做芹菜之前做的事情:Background Tasks in Python with RQ。您可能仍然会发现有关芹菜herehere的信息,但这些都是我找到的。

一般来说,我怀疑芹菜只是被移除了。它会影响已经使用Celery设置的所有其他应用程序。我认为你仍然可以使它工作,并可能会找到一些远离Heroku文档的文章。

答案 2 :(得分:3)

我认为Celery作为Heroku的后台任务存在问题。我们尝试创建这样的任务,并且在运行大约20分钟后占用所有内存,即使在Redis或RabbitMQ上使用DEBUG = False也是如此。更糟糕的是,内存永远不会释放:每次我们必须重新启动工作人员。 相同的代码在裸​​Linux上或在带有Foreman的Mac上运行完美。 它发生在非常简单的任务中,比如在循环中读取文本文件,写入Django模型。

答案 3 :(得分:2)

虽然我花了很长时间才想知道如何使这项工作,但它确实很直接。在proc文件中,添加芹菜进程。它看起来像这样:

web: newrelic-admin run-program gunicorn -w 4 myapp.wsgi
celery: python manage.py celeryd -c 3 --beat

然后,确保将芹菜dyno缩放到至少1:

heroku ps:scale celery=1

就是这样。

答案 4 :(得分:2)

我们在Heroku上完全支持芹菜。您可以在命名工作进程和扩展它们时运行工作程序,并运行任何进程。在使用什么作为后端方面,我们有各种附加提供程序,可以通过Rabbit,Redis或其他提供支持。

您可以在https://devcenter.heroku.com/articles/celery-heroku处的devcenter中找到完整的指南。