2017-03-05 11 views
0

私はDjango 1.9、Python 2.7、Herokuを使用しています。HerokuでCelery&Redisをインストール

セロリ3 &セリス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:// 

ヒント?

答えて

0

私はセロリで昨日問題があり、それを取り除こうと努力しました。最終的に問題は、プロジェクトのセロリファイルの名前を'celery.py'としたことです。私はセロリライブラリので、同じように参照だから私の他のファイルで

、:それはセロリのクラスのための私のプロジェクトのセロリファイルで見て、エラーを上げた

from celery import Celery 

。解決策は、ファイルの名前を_celery.pyに変更することでした。

また、サーバーにenelがインストールされていることを確認してください。

私はこれがあなたの問題だとは思っていませんが、それを提案しなければなりませんでした!用

worker: python manage.py celery worker --beat 

:あなたのProcfile、変更に

+0

私はあなたに提案を試みましたが、うまくいかないようです。とにかくありがとうございました。 –

0

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

と[nameOfYourApp]であなたのDjangoプロジェクトの名前を入れました。

これはUnknown command: 'celery'に対応しています。なぜなら、manage.pyにはそのようなコマンド名がないからです。

関連する問題