用python芹菜关闭

问题描述

我有以下代码

def get_periodic_tasks(period_one,period_two):
    print("Before setup tasks")
    # I would like to use closure to get environmental vars from config
    def setup_periodic_tasks(sender,**kwargs):
        print("Setting tasks")
        sender.add_periodic_task(period_one,task_one.s())
        sender.add_periodic_task(period_two,task_two.s())
    # returning a function
    return setup_periodic_tasks


def init_app(app):
    # executing closure
    setup_periodic_tasks = get_periodic_tasks(
        app.config['GET_ENV1'],app.config['GET_ENV2'])
    print("Vars from config: {},{}".format(app.config['GET_ENV1'],app.config['GET_ENV2']))
    celery.on_after_configure.connect(setup_periodic_tasks)

我想在关闭时使用环境变量(从配置文件获取),以保持代码干净。 因此,我在init_app内部获得了一个函数,在该函数中,我将env vars传递给了Closure,并希望使它起作用。 根据所有规则,它应该可以工作!但由于某种原因,它失败了,我因为打印而看到了:

Before setup tasks
Vars from config: env1,env2

而且我从没见过Setting tasks,而且我知道函数setup_periodic_tasks永远不会执行,所以我的任务没有安排。

我不了解这种行为。 我在这里做错什么了?。

提前谢谢!

P.S。

我正在使用python3Celery

此问题与this

相关联

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)