2017-03-05 69 views
0

我使用Django 1.9,Python 2.7和Heroku。用Heroku安装Celery&Redis

芹菜3 & Redis工作得很好,直到我切换到芹菜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。

此外,检查芹菜安装在您的服务器环境。

我怀疑这是你的问题,但不得不建议它!

+0

我试过你的建议,但它似乎并没有工作。不管怎样,谢谢你。 –

0

在你Procfile,更改:

worker: python manage.py celery worker --beat 

为:

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

,并把在[nameOfYourApp] Django项目的名称。

它响应Unknown command: 'celery',因为manage.py没有这样的命令名称。