我的问题是节拍调度程序不会在表'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 回答
你有没有开始celerycam?
它将拍摄当前任务状态的快照(默认情况下每1秒) .
您可以在celery documentation中阅读更多相关信息 .