我对python 3.4和celery 4.0.2中的进程共享变量有疑问。我已经阅读了帖子(Celery worker variable sharing issues),其中海报的目标是不分享变量。
我目前与此问题完全相反:我想在单个工作程序的所有子进程中共享变量。
我的情况如下:
config.py
class MyGlobalConfig(object):
def __init__(self):
self.data = {}
def get(key):
return self.data[key]
global_config = MyGlobalConfig()
bootstep.py
import config
...
global_config.data = response_data
...
从任务访问的some.py
import config
...
global_config.get(key) # NoneType cause global_config.data is empty
...
我不知道为什么它有时会起作用,有时候不起作用。从我所看到的芹菜在工人的靴子完成之后分叉它的子过程 - 理论上我的数据应该在那里。
除了这些启动问题之外,完全有可能在工作者的生命周期内获得配置更新,我也需要将其分发给所有子进程。
在芹菜中最好的方法是什么?到目前为止,我发现的一切都是以工人为中心或利用经纪人。因为它只适用于当地工人的工作,我不想使用任何可能影响其他非本地工人的事情或利用经纪人...