簡體   English   中英

Django更新了Celery的異步任務中的設置

[英]Django update settings in Celery's async task

我正在使用芹菜來加載神經網絡模型,並希望將加載的模型存儲在快速預測的設置中。

所以在django.conf.settings我有:

MODELS = {}

在celery任務中,我有以下片段:

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

但是,我注意到任務正在另一個啟動不同Django Environment的線程中運行,並且設置中的任何更改都不會反映回主線程。

這有解決方法嗎?

編輯

我在設置中存儲的參數是:

顯然,Django設置不適合這個。 首先,因為settings對象不是共享資源(每個進程有一個實例),因為doc明確提到該對象被認為是不可變的

如果您的目的是讓芹菜任務計算這些對象,以便其他任務和/或前端可以使用它們,您將不得不找到一種方法來序列化它們並將序列化版本存儲在共享資源(數據庫,緩存等)中)。

您可以嘗試使用configparser import configparser

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可以讀取更多的受支持數據類型

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM