python - 使用 Heroku 安装 Celery 和 Redis

标签 python django heroku redis celery

我使用 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))

Proc文件

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

.env

REDIS_URL=redis://

有什么线索吗?

最佳答案

在您的 Procfile 中,更改:

worker: python manage.py celery worker --beat

对于:

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

并将您的 django 项目的名称放入 [nameOfYourApp] 中。

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

关于python - 使用 Heroku 安装 Celery 和 Redis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42611227/

相关文章:

python - 在 python 中旋转数据框

django - 如何生成时间戳作为 Django 管理字段中的默认值

Django 日志记录不输出到 nginx 服务器上的日志文件

ruby-on-rails - 在 Heroku 上使用瘦服务器部署 Rails 应用程序时出现 "No such file or directory"错误

postgresql - Heroku PGBackups - 运行 "heroku pg:backups"时看不到每日备份

python - 数据标准化

python - 在 Python 3.x 中保留或添加小数位

python - 如何组合 range() 函数

python - Django/Python POST 数据从表单(不使用模型)到 MySQL 数据库

git - 在 Heroku 上克隆以前的版本