python使用訊號量動態更新配置檔案的操作

2022-09-29 23:03:19 字數 2574 閱讀 8856

一種小技巧,可以讓python捕獲訊號量hup 然後當使用 kill 發起hup訊號量的時候 捕獲到進行處理,可以處理為重新讀取配置檔案並重新賦值,這樣不需要重啟服務也可以讓程式重新讀取配置檔案的內容

捕獲訊號量

import signal

import configparser

def get_config():

conf = configparser.configparser()

conf.read("config.cfg")

name = conf.get(程式設計客棧"test", "name")

print(name)

def update_conf

print("update config")

get_config()

def ctrl_c(signum,frame):

print("input ctrl c")

exit(1)

# 捕獲hup

signal.signal(signal.sighup, update_config)

# 捕獲ctrlgmintzegwv+c

signal.signal(signal.sigint, ctrl_c)

print("test signal")

ge程式設計客棧t_config()

while true:

pass

配置檔案

$ cat config.cfg

[test]

# name = "recar"

name = "@@@"

執行程式 python

修改配置檔案 name為recar

發起hup訊號

切到捕獲的訊號量看到重新更新了配置檔案

這裡我開始還有的 from config import name

然後捕獲訊號量再重新匯入,也就是再執行一下 from config import name

這樣是不行的,如果想要重新匯入需要 reload(模組) 但是這裡reload不支援 from的形式

我改為 import config 然後在 自定義的訊號量處理函式中 reload(config) 來實現重新載入模組。

還是推薦使用 configparser 來獲取配置檔案好一些。

補充知識:python3-configparser讓配置檔案生效

ini檔案由節、鍵、值組成。格式如下:

例如:[section]

name=value

name:value

註解使用分號表示(;)。在分號後面的文字,直到該行結尾都全部為註解。

configparser模組含有configparser類,主要包含三個模組:rawconfigparser(),configparser()、safeconfigparse()這三個方法(三選一),建立乙個物件使用物件的方法對配置檔案進行增刪改查操作.

from configparser import configparser

if __name__ == "__main__":

#寫入資料到test.ini檔案

config=configparser()

config.add_section('login')

config.set('login','name','test')

config.set('login','paw','test')

with open("test.ini",'w+') as f :

config.write(f)

with open("test.ini",'r') as f_read:

config.read_file(f_read)

print(config.get('login','name'))

config.read(f_read)

#獲取section

print(config.sections())

#獲取key

print(config.get('login','name'))

#獲取value

print(config.get('login','paw'))

#獲取某個section下的key,value

print(config.options('login'))

#判斷section是否存在,存在返回true,不存在返回false

print(config.has_section('login'))

#方法判斷section下,某個鍵是否存在,存在返回true,不存在返回false

print(config.has_option('login','name1'))

刪除remove_section()方法刪除某個section,remove_option()方法刪除某個section下的鍵 config.remove_section('login','paw')

注:要先read到記憶體

config.read(file)

實際刪除的為記憶體中的,檔案中的section的鍵不會減少

本文標題: python使用訊號量動態更新配置檔案的操作

本文位址: /jiaoben/python/305064.html

python使用訊號量動態更新配置檔案

一種小技巧,可以讓python捕獲訊號量hup 然後當使用 kill 發起hup訊號量的時候 捕獲到進行處理,可以處理為重新讀取配置檔案並重新賦值,這樣不需要重啟服務也可以讓程式重新讀取配置檔案的內容 捕獲訊號量 import signal import configparser def get c...

python訊號量 Python訊號量

python訊號量教程 訊號量是由作業系統管理的一種抽象資料型別,用於在多執行緒中同步對共享資源的使用。本質上說,訊號量是乙個內部資料,用於標明當前的共享資源可以有多少併發讀取。也可以簡單的理解為,訊號量是多把鎖,同時允許多個執行緒來更改資料,而 python訊號量與互斥鎖的關係 訊號量的乙個特殊用...

訊號量 二值訊號量

訊號量 二值訊號量 訊號量是作業系統的重要部分,訊號量一般用來進行資源管理和任務同步。freertos中訊號量分為二值訊號量 互斥訊號量 計數訊號量和遞迴互斥訊號量,應用場景各不同。二值訊號量通常用於互斥訪問或同步,二值訊號量和互斥訊號量非常相似,但互斥訊號量有優先順序,二值訊號量沒有。因此二值訊號...