已安排但未在ETA执行芹菜任务

时间:2018-11-27 21:59:46

标签: python celery celery-task

我的芹菜配置如下:

# create context tasks in celery
celery = Celery(
    __name__,
    # redis
    backend=app.config['CELERY_RESULT_BACKEND'],
    broker=app.config['CELERY_BROKER_URL'],
    include=['app.celery_tasks.tasks']
)
celery.conf.timezone = 'US/Pacific'
celery.conf.broker_transport_options = {'visibility_timeout': 3600*24}
celery.conf.task_routes = {
    'tasks.periodic': {
        'queue': 'periodic',
        'routing_key': 'tasks.periodic'
    },
    'tasks.generate_report': {
        'queue': 'report',
        'routing_key': 'tasks.generate_report'
    }
}

然后我正在使用此辅助方法来为所有报告任务获取eta

def get_eta_time(time_d=8):
    tz = timezone('US/Pacific')
    ct = datetime.now(tz=tz)
    eta = ct + timedelta(hours=time_d)
    return eta

我遇到的是,我可以看到这些任务是使用celery控件安排的,但是在eta到达时它们不会执行。但是,当我尝试重新启动芹菜工作者时,这些任务立即被执行。我的芹菜配置中缺少什么吗?

我的任务触发如下:

eta = get_eta_time()
generate_report.apply_async(args=(log_location, repetition_count+1), queue='report', eta=eta)

我的定期队列按预期工作,但是我的报告队列对我没有任何意义。

0 个答案:

没有答案