我的芹菜节拍和工作人员一直遇到这些问题,我的芹菜节拍创建任务,但芹菜工作人员没有收到它。我使用 elasticmq 作为代理
我的芹菜节拍日志
它不会从 celerybeat 中获取任务,这是任务的片段
app = Celery("app")
logger = get_task_logger(__name__)
CELERY_CONFIG = {
"CELERY_TASK_SERIALIZER": "json",
"CELERY_ACCEPT_CONTENT": ["json"],
"CELERY_RESULT_SERIALIZER": "json",
"CELERY_RESULT_BACKEND": None,
"CELERY_ENABLE_UTC": True,
"CELERY_ENABLE_REMOTE_CONTROL": False,
}
BROKER_URL = "sqs://user:password@sqs:9324/"
CELERY_CONFIG.update(
{
"BROKER_URL": BROKER_URL,
"BROKER_TRANSPORT": "sqs",
"BROKER_TRANSPORT_OPTIONS": {
"region": "us-west-2",
"use_ssl": False,
"visibility_timeout": 3600,
"polling_interval": 60,
},
}
)
app.conf.update(**CELERY_CONFIG)
app.config_from_object("django.conf:settings", namespace="CELERY")
这是任务,
@celery.app.task()
def beat_task() -> None:
logger.info("Starting beat task...")
time.sleep(2)
logger.info("Done beat task.")
CELERY_BEAT_SCHEDULE = {
"beat_task": {
"task": "app.tasks.beat_task",
"schedule": timedelta(seconds=10),
},
}
我没有获得工作人员的记录器信息打印结果
尝试连接芹菜工人和节拍,没有工作
此处未定义
celery.app
对象。这里使用名称 app
而不是 celery.app
来初始化 Celery 对象。
所以将装饰器更改为@app.task()
。
app = Celery("app")
logger = get_task_logger(__name__).....
@app.task()
def beat_task().....
将代码中
celery.app
中的任何其他引用更新为 app