【问题标题】:Celery beat not starting on Heroku芹菜节拍没有在 Heroku 上开始
【发布时间】:2016-11-16 14:15:12
【问题描述】:

我在 Heroku 上启动了一个应用程序,但是当我启动服务器时,Celery beat 进程没有启动。

过程文件

web: gunicorn -w 4 connect.wsgi
celery: python manage.py celeryd -c 3 --beat

在 Heroku 应用启动后可以看到 worker 启动了:

$ heroku ps

=== web (Free): gunicorn -w 4 connect.wsgi (1)
web.1: starting 2016/07/13 16:17:18 -0400 (~ 9s ago)

=== celery (Free): python manage.py celeryd -c 3 --beat (1)
celery.1: up 2016/07/13 16:17:25 -0400 (~ 2s ago)

但是,为了让 Celery beat 进程运行,我必须在 Heroku 中明确启动它:

heroku run python manage.py celerybeat

Celery beat 在本地可以正常启动。这是 Heroku 的限制还是我做错了什么?

【问题讨论】:

    标签: python heroku celery django-celery celerybeat


    【解决方案1】:

    如果我没记错的话,Heroku 只允许在一个应用程序中使用两个免费的 Dyno 实例。

    【讨论】:

    • 那太糟糕了...奇怪的是你可以在终端中启动一个进程来获得第三个。
    【解决方案2】:

    @Jared Goguen:嗨,朋友,

    您可能需要在 Heroku 中扩展您的工人,

    在 Heroku 上部署

    如果您已经在上面创建了一个 Procfile 并为消息代理和结果存储附加了适当的插件,那么剩下要做的就是推送和扩展您的应用程序:

    git push heroku master
    
    heroku ps:scale worker=1
    

    当然,您可以随时扩展到任意数量的工人测功机。现在像在本地一样运行任务:

    heroku run python
    
    >>> import tasks
    >>> tasks.add.delay(1, 2)
    

    您应该会在应用程序日志中看到正在运行的任务:

    heroku logs -t -p worker
    

    来源:Heroku Guides

    【讨论】:

    • PS:我很抱歉格式不好,所以引用的代码给了我错误。
    • 之前试过这个,但遇到了“dynos 不够”的问题,哦,好吧。
    • 正如@Muhlen 在另一个答案中所说,您需要升级您的帐户,当然您可以从终端启动它,但相同的测功机将参加它(不推荐)
    【解决方案3】:

    如果您在带有单个测功机的免费层 heroku 上运行,那么您最好的办法是使用工头的 honcho python clone 一个工具来管理基于 Procfile 的应用程序。克隆https://github.com/nickstenning/honcho,这将允许您为您的 celery beat/workers 分叉多个进程。您仍然会受到 heroku 的免费层内存 512MB ram 和 dyno 运行时间的限制。所以对于快速开发和 poc 来说,没有什么太大的好处

    安装本机

    pip install honcho

    确保 honcho 是您要求的一部分。txt

    pip freeze > requirements.txt

    创建一个 ProcfileHoncho 存储你所有的原始 Procfile 内容

    ProcfileHoncho

    web: gunicorn myDjangoApp.wsgi --log-file -
    worker1: celery -A myDjangoApp beat -l info
    worker2: celery -A myDjangoApp worker -l info
    

    过程文件

    web: honcho start -f ProcfileHoncho
    

    确保您通过配置变量加载您的代理 URL 并指向您的免费托管代理。相信您可以通过快速谷歌搜索找到一位免费经纪人

    git push heroku master
    heroku logs -t 
    

    查看日志,看看它们是否有任何错误。在这一点上,你应该很高兴。

    【讨论】:

      猜你喜欢
      • 2020-01-23
      • 2012-03-27
      • 2021-09-23
      • 1970-01-01
      • 2012-11-13
      • 2015-05-11
      • 2018-09-08
      • 2021-10-24
      • 1970-01-01
      相关资源
      最近更新 更多