首页 文章

django和芹菜击败调度程序没有数据库条目

提问于
浏览
1

我的问题是节拍调度程序不会在表'tasks'和'workers'中存储条目 . 我用django和芹菜 . 在我的数据库(MySQL)中,我添加了一个周期性的“估计区域”,间隔为120秒 .

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

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

在我启动工作人员之后,我可以在终端中看到工作人员正在工作,并且调度程序从数据库中挑选出定期任务并对其进行操作 .

我的任务是如何定义的:

@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管理面板中的“任务”或“工作人员”中没有数据库条目 .

这是我在settings.py中的芹菜设置

`CELERY_DISABLE_RATE_LIMITS =真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:password@192.168.99.31'
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'`

我希望有人可以帮助我:)

1 回答

  • 5

    你有没有开始celerycam?

    python manage.py celerycam
    

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

    您可以在celery documentation中阅读更多相关信息 .

相关问题