我将Flask与芹菜和芹菜搅拌一起使用。
我有一个任务,每2分钟和10分钟运行一次。我需要存储一个全局对象,每个任务可以在任何给定时间访问。这是我的celeryconfig
:
store = {"foo": 1, "bar": 0}
CELERYBEAT_SCHEDULE = {
"2-minutes": {
"task": "server.social.crawler.crawl",
"schedule": crontab(minute=f"*/2"),
"kwargs": dict(store=store),
},
"10-minutes": {
"task": "server.social.crawler.crawl",
"schedule": crontab(minute=f"*/10"),
"kwargs": dict(store=store),
}
}
我正在寻找一种从store
任务中更改crawl
的方法,因此,下次运行(大约8分钟后),store
与最新的变化。目前,当我从任务中更改store
时,它不会反映在任务的下一次调用中:
@celery.task()
def crawl(store: Dict[str, int]):
print(store) # always prints {"foo": 1, "bar": 0}
store["foo"] = 2