问题描述
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。
此问题与this
相关联解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)