在Celery任务之间共享变量

时间:2019-05-22 11:55:59

标签: python flask multiprocessing celery

我将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

0 个答案:

没有答案