Celery 异步任务中的 Django 更新设置



我正在使用芹菜来加载神经网络模型,并希望将加载的模型存储在设置中以便快速预测。

所以在django.conf.settings我有:

MODELS = {}

在芹菜任务中,我有以下代码片段:

@app.task
def load_nn_models(model_name):
from django.conf import settings
...    
settings.MODELS[model_name] = {'model': net, 'graph': sess}

但是,我注意到任务在另一个启动不同Django 环境的线程中运行,并且设置中的任何更改都不会反映回主线程。

有解决方法吗?

编辑

我存储在设置中的参数是:

  • 净:凯拉斯模型
  • sess: 张量流会话

显然,Django设置不是正确的地方。首先是因为settings对象不是共享资源(每个进程有一个实例(,然后是因为文档明确提到此对象将被视为不可变的。

如果您的观点是让芹菜任务计算这些对象,以便其他任务和/或前端可以使用它们,则必须找到一种方法来序列化它们并将序列化版本存储在共享资源(数据库、缓存等(中。

你可以尝试使用配置解析器 导入配置解析器

def dict_from_file():
config = configparser.ConfigParser()
config.read("config.ini")
models = config['models']
for x in models.values():
print(x)

设置文件config.ini

[models]
var_a: home
var_b: car
var_c: Next

调用dict_from_file输出为:

home
car
Next

更新文件config.ini

[models]
var_a: home
var_c: New

调用dict_from_file输出为:

home
New

YPU 可以阅读更多支持的数据类型

相关内容

  • 没有找到相关文章

最新更新