簡體   English   中英

使用Heroku安裝Celery&Redis

[英]Install Celery & Redis with Heroku

我使用Django 1.9,Python 2.7和Heroku。

Celery 3和Redis運行良好,直到我切換到Celery 4.0.2並更改了配置。

heroku日志顯示以下消息:

2017-03-05T16:34:22.076383+00:00 app[worker.1]: Unknown command: 'celery'

這是我的配置:

__init.py__

from __future__ import absolute_import, unicode_literals
from .celery import app as celery_app
__all__ = ['celery_app']

settings.py

INSTALLED_APPS = (
    ... 
    'django_celery_beat',
)

if ENVIRONMENT == 'PROD':
    from settings_remote import *
else:
    from settings_local import *

settings_remote.py

from __future__ import unicode_literals, absolute_import
import os
CELERY_BROKER_URL = os.environ['REDIS_URL']
CELERY_ACCEPT_CONTENT = ['json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'

celery.py

from __future__ import absolute_import, unicode_literals
import os
from celery import Celery
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'terradiem.settings')
from django.conf import settings
app = Celery('terradiem')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
@app.task(bind=True)
def debug_task(self):
    print('Request: {0!r}'.format(self.request))

Procfile

web: gunicorn terradiem.wsgi --log-file -
worker: python manage.py celery worker --beat

.ENV

REDIS_URL=redis://

有什么線索嗎?

昨天我的芹菜有問題,花了數小時試圖消除它。 最后,問題是我將項目的celery文件命名為'celery.py'

因此,在其他文件中,當我像這樣引用celery庫時:

from celery import Celery

它正在我項目的celery文件中查找Celery類,並引發錯誤。 對我來說,解決方案是將文件重命名為_celery.py。

另外,請檢查您的服務器環境中是否安裝了celery。

我懷疑這是您的問題,但不得不提出建議!

在您的Procfile中,更改:

worker: python manage.py celery worker --beat

對於:

worker: celery -A [nameOfYourApp] worker --beat

並將您的django項目的名稱放入[nameOfYourApp]。

它響應Unknown command: 'celery'因為manage.py沒有這樣的命令名。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM