全域性變數僅限於單例項模式哈,對於多例項集群如k8s docker則建議使用redis來實現
以上請特別留意哈,比如docker中多個pod基本上是沒有辦法共享全域性變數的,一直漂,讀的值和設的值會有問題
ok,言歸正傳,對於單例項的模式而言要如何做到不同模組統一管理全域性變數呢?
一、全域性變數管理模組
首先定義乙個全域性變數管理模組
# common/gloabalvar.py
# -*- coding:utf-8 -*-
"""global var module
"""def
_init()
:global _global_dict
_global_dict =
defset_value
(name, value)
:"""定義乙個全域性變數"""
_global_dict[name]
= value
defget_value
(name, defvalue=
none):
"""獲取乙個全域性變數值,不能存在則返回預設值"""
try:
return _global_dict[name]
except keyerror:
return defvalue
二、初始化及定義(設定)全域性變數# main.py
if __name__ ==
"__main__"
:# init global var
globalvar._init(
) globalvar.set_value(
'itsm_deadline'
, settingconfig.itsm_daily_deadline)
globalvar.set_value(
'email_subject'
, settingconfig.email_subject)
globalvar.set_value(
'email_recipients'
, settingconfig.email_recipients)
globalvar.set_value(
'auto_submit_status'
, settingconfig.auto_submit_status)
三、獲取全域性變數# business.py
status = globalvar.get_value(
'auto_submit_status'
)
附加:api管理全域性變數,都是基於上述三點完成
對於flask-restful的web應用則可以通過api介面檢視全域性變數的值以及通過api介面設定和管理它們
from flask_restplus import resource
from
.marshal_model import admin_api_ns as api
@api.route(
'/')
class
globalvar
(resource)
:"""全域性變數管理api"""
:"""查詢所有的全域性變數"""
:"""檢視及修改自動狀態的api"""
:"""測試檢視自動狀態開關狀態"""
:"""設定每天定時自動開關"""
Gradle統一管理版本
為了提高專案開發效率,在實際專案開發過程中往往會引入一些開源框架,還有專案中使用的各種module,當引入module過多時最好提供一種統一的方式去管理版本號,如 compilesdkversion buildtoolsversion androidtestcompile 等,便於日後對版本號進行維...
php統一管理crontab
統一管理crontab計畫任務的關鍵點,在於實現像crontab一樣對 10 這樣的命令如何進行解析。解析完成最後呼叫系統函式執行shell命令 新建控制器 console controllers testcroncontroller新增任務 this cronjobs hello index he...
Redis Key 統一管理技巧
我們的專案中可能存在多種業務場景需要接入 redis 快取,在插入快取時需要設定 key,如果這個 key 散落在專案的各個業務 中的話,會給後期維護帶來很大的不便。所以我建議把系統中用到快取 key 放到乙個類中統一管理,相同業務的 key 放到一起,這樣也提高了系統 的可讀性,讓看這個系統的人一...