Python 西芹指南澄清
我正试图弄明白那些令人悲哀的指示 在“配置芹菜应用程序”一节下,我不确定代码放在哪里:Python 西芹指南澄清,python,django,heroku,celery,Python,Django,Heroku,Celery,我正试图弄明白那些令人悲哀的指示 在“配置芹菜应用程序”一节下,我不确定代码放在哪里: import os app.conf.update(BROKER_URL=os.environ['REDIS_URL'], CELERY_RESULT_BACKEND=os.environ['REDIS_URL']) 非常感谢您对这些说明所做的任何澄清。这些说明表明您应该将该代码放入tasks.py模块中。但是,对于多个包来说,这并不完全是可扩展的,每个包都有自己的tasks.py模
import os
app.conf.update(BROKER_URL=os.environ['REDIS_URL'],
CELERY_RESULT_BACKEND=os.environ['REDIS_URL'])
非常感谢您对这些说明所做的任何澄清。这些说明表明您应该将该代码放入tasks.py模块中。但是,对于多个包来说,这并不完全是可扩展的,每个包都有自己的tasks.py模块。我建议您在settings.py文件所在的目录中创建一个
芹菜.py
文件
# tasks.py
import celery
app = celery.Celery('example')
app.conf.update(BROKER_URL=os.environ['REDIS_URL'],
CELERY_RESULT_BACKEND=os.environ['REDIS_URL'])
或者,您可以在settings.py
中指定设置,并将芹菜配置为:
# settings.py
broker_url = os.environ['REDIS_URL']
result_backend = os.environ['REDIS_URL']
# celery.py
from celery import Celery
from celery.utils.collections import DictAttribute
from celery.loaders.base import BaseLoader
from django.conf import settings
from django.apps import apps
class ProjectLoader(BaseLoader):
def read_configuration(self):
"""Load configuration from Django settings.
This may not be needed to be honest. It's what I use in my project.
"""
return DictAttribute(settings)
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project.settings")
# CELERY_LOADER must be set in the environment. Setting the ``loader``
# kwarg for the app instance does _not_ do what we need it to.
os.environ.setdefault("CELERY_LOADER", "project.celery:ProjectLoader")
app = Celery("project")
app.config_from_object("django.conf:settings")
app.autodiscover_tasks(lambda: [n.name for n in apps.get_app_configs()])
# Procfile
worker: celery worker --app=project.celery
免责声明,其中一些配置将需要为您的项目进行调整。以下是我采取的步骤,结合说明以及我在web上找到的其他来源,创建一个最小的heroku/django/Cellery/redis项目。希望有人会觉得这很有用
from celery import Celery
app = Celery('tasks', broker='redis://localhost:6379/0')
@app.task
def add(x, y):
return x + y
import hello.tasks
hello.tasks.add.delay(1, 1)
consumer: Cannot connect to amqp://guest:**@127.0.0.1:5672//: [Errno 61]
Connection refused.
尝试使用命令“brew services restart redis”重新启动redis服务器
给你。一个最小的heroku/django/芹菜/redis项目!你可以下载它
**注意:在工作项目中,“芹菜工人”命令已经包含在Procfile中。谢谢您的回复。现在,我不断地得到错误:raisekeyerror(key)from None KeyError:“REDIS_URL”from my tasks.pyfyi,我已经为REDIS_URL设置了.env,听起来您需要了解为什么该文件没有加载到您的环境中。