django 和 celery 节拍调度程序没有数据库条目

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

我的问题是节拍调度程序不会在表

tasks
workers
中存储条目。我用 Django 和芹菜。在我的数据库 (MySQL) 中,我添加了一个名为“估计区域”的定期任务,间隔为 120 秒。

这就是我开始工作的方式:

python manage.py celery worker -n worker.node1 -B --loglevel=info &

启动worker后,我可以在终端中看到worker正在工作,调度程序从数据库中挑选周期性任务并运行它。

我的任务是如何定义的:

@celery.task(name='fv.tasks.estimateRegion',
             ignore_result=True,
             max_retries=3)
def estimateRegion(region):

终端显示:

WARNING ModelEntry: Estimate Region fv.tasks.estimateRegion(*['ASIA'], **{}) {<freq: 2.00 minutes>}
[2013-05-23 10:48:19,166: WARNING/MainProcess] <ModelEntry: Estimate Region fv.tasks.estimateRegion(*['ASIA'], **{}) {<freq: 2.00 minutes>}>
INFO Calculating estimators for exchange:Bombay Stock Exchange

任务“估计区域”创建一个

results.csv
文件,因此我可以看到工作器和节拍调度器正在工作。但之后我的 django 管理面板中的
tasks
workers
中没有数据库条目。

这是我在

settings.py
中的芹菜设置:

CELERY_DISABLE_RATE_LIMITS = True
CELERY_TASK_SERIALIZER = 'pickle'
CELERY_RESULT_SERIALIZER = 'pickle'
CELERY_IMPORTS = ('fv.tasks')
CELERY_RESULT_PERSISTENT = True

# amqp settings
BROKER_URL = 'amqp://fv:password@localhost'
#BROKER_URL = 'amqp://fv:[email protected]'
CELERY_RESULT_BACKEND = 'amqp'
CELERY_TASK_RESULT_EXPIRES = 18000
CELERY_ROUTES = (fv.routers.TaskRouter(), )
_estimatorExchange = Exchange('estimator')
CELERY_QUEUES = (
    Queue('celery', Exchange('celery'), routing_key='celery'),
    Queue('estimator', _estimatorExchange, routing_key='estimator'),
)

# beat scheduler settings
CELERYBEAT_SCHEDULER = "djcelery.schedulers.DatabaseScheduler"

# development settings
CELERY_RESULT_PERSISTENT = False
CELERY_DEFAULT_DELIVERY_MODE = 'transient'`

我希望有人能帮助我:)

mysql django celery celerybeat
1个回答
5
投票

你开始celerycam了吗?

python manage.py celerycam

它将拍摄任务当前状态的快照(默认情况下每 1 秒一次)。

您可以在 celery 文档

中阅读更多相关信息
© www.soinside.com 2019 - 2024. All rights reserved.