无法在 django-db 后端获取 celery 结果,但我的设置似乎是正确的(Django、Postgres、Redis)

问题描述 投票:0回答:2

我无法将 celery 结果存储在我的 django-db 后端中 - 我尝试了很多解决方案,但没有任何运气。我有点卡在这一点上..但是,我怀疑这与 cockroach-db 有关。

我的设置使用 Django 4.1、Postgres (cockroach-db) 和 Redis (Heroku)。

我正常启动 django,然后使用以下命令启动 celery Worker:

celery -A kmaofny worker --loglevel=info -E

我的芹菜工作人员看到任务,并且它们已完成,但它不会将结果存储在我的数据库中。

这是我的设置和配置:

设置.py

INSTALLED_APPS = [
...
'django_celery_results',
...
]

DATABASE_URL = POSTGRES_CREDS['URI']
DATABASES = {
    'default': dj_database_url.config(default=DATABASE_URL, engine='django_cockroachdb')
}

# Celery Configuration
REDIS_URL = os.environ.get('REDIS_URL', BROKER_URL)
CELERY_BROKER_URL = REDIS_URL
CELERY_RESULT_BACKEND = 'django-db'
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
DJANGO_CELERY_RESULTS_TASK_ID_MAX_LENGTH=191
CELERY_TASK_TRACK_STARTED = True
CELERY_TASK_TIME_LIMIT = 30 * 60

芹菜.py

import os
from celery import Celery
# Set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'kmaofny.settings')
app = Celery('kmaofny')
app.config_from_object('django.conf:settings', namespace='CELERY')
# Load task modules from all registered Django app configs.
app.autodiscover_tasks()

初始化.py

from .celery import app as celery_app
__all__ = ('celery_app',)

感谢任何帮助 - 我在这一点上没有任何错误。此外,当我在 django 视图中调用以下命令时,我得到

<django_celery_results.backends.database.DatabaseBackend object at 0x000001A9B3B64040>

result = add_numbers.delay(1,5)
print(result.backend)

我调用

task.backend
检查数据库是否在设置中正确设置,在 celery Worker 上使用 -E 标志,并在 settngs.py 中配置
CELERY_RESULT_BACKEND='django-db'

django postgresql redis celery cockroachdb
2个回答
0
投票

我不确定这是否是答案,但显然所有任务(即使已完成)仍列为状态=待处理。

我解决了这个问题,现在当我用这个运行 celery 工作程序时,我的 django 数据库后端收到任务状态更新(和任务状态' = 成功)

celery -A kmaofny  worker --loglevel=info -E --pool=solo

而不是

celery -A kmaofny  worker --loglevel=info -E

根据其他人的说法,这可能是 Windows 问题。见链接:

Celery 任务始终待处理 https://github.com/celery/celery/issues/2146 Celery“入门”无法检索结果;一直待处理


0
投票

谢谢你,克里斯! 我也遇到同样的问题,看看是否能解决。 糟糕的是,q 和 a 都被否决了。当我获得声誉时会添加+1😂

© www.soinside.com 2019 - 2024. All rights reserved.