13

我终于有了一些空闲时间,想将 Celery 添加到我在 Heroku 上的 Python/Flask 项目中。然而,几乎所有 Heroku 文档中提到的 Celery 都消失了。“Django 入门”中曾经有一篇教程的文章,但现在没有了。

我自己“只是做”会起作用吗?在 Heroku 上用作后端的好的 AMQP 插件是什么?

4

5 回答 5

56

我是 Heroku 的 Python 所有者。

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

我目前正在撰写一篇新的开发中心文章,该文章深入探讨了如何充分利用 Celery。它应该很快就会发布。

至于队列插件——我是CloudAMPQ的忠实粉丝。

于 2013-03-07T19:39:05.883 回答
3

他们似乎已经更改了文档。不确定不再支持 celery,因为它只是一个 python 包,你可以安装它。

这是有关如何开始使用 Django的文档(没有我上次观看时提到 celery 的部分)。他们现在似乎使用 RQ 来做 celery 之前所做的事情:Python 中的后台任务与 RQ你可能仍然会在这里这里找到一些关于芹菜的东西,但这就是我发现的全部。

一般来说,我怀疑芹菜是否被简单地去除了。它会影响所有其他已经用 Celery 设置的应用程序。我认为您仍然可以使其工作,并且可能会从 Heroku 文档中找到一些文章。

于 2013-03-07T08:31:42.840 回答
3

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

于 2013-03-31T21:21:58.140 回答
2

尽管我花了很长时间才弄清楚如何完成这项工作,但它确实非常简单。在您的 procfile 中,添加一个 celery 进程。它看起来像这样:

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

然后,只需确保将 celery dyno 缩放到至少 1:

heroku ps:scale celery=1

就这样。

于 2013-12-02T21:23:57.937 回答
2

我们完全支持 Heroku 上的 celery。您可以在我命名您的工作进程并扩展它们时运行工作人员,并运行任何进程。至于使用什么作为后端,我们有各种各样的附加供应商可以通过 Rabbit、Redis 或其他方式支持这一点。

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

于 2014-08-05T21:16:15.097 回答