現在做一套伺服器上程式的自動工具,有啟動停止、調整的各種操作。但是不同節點上的部署內容都不只相同,假設現在已經做好了各種功能的python函數。然後透過讀取外部信息,例如一個json數據,來確定這些函數的運行順序與參數,能否提一下如何實現?
例如有 函數函數1(參數1,參數2) 功能函數2(參數1,參數2,參數3) 功能函數3(參數1) 三種業務函數。
然後我讀一個{{{'funcname':'功能函數2'},{'parameter':[para1,para2,para3]}},{{'funcname':'功能函數1'}, {'parameter':[para1,para2]}}}
然後程式就會按照函數2,函數1的順序,並讀取其中的parameter參數執行這一系列動作。
(其實作為自動化工具,肯定需要及時反饋信息,再執行完每個函數之後還會讀取返回信息,如果出錯就會立即中斷程序,並且上報信息或者記錄日誌,所以也就是說每執行完一個功能函數,也會執行一個簡單判斷回傳結果的程式)
這裡要注意的是,要執行幾個函數函數是不確定的,順序也是不確定的。我直接想到的是的最笨的辦法是,遍歷外部json文件,然後讀出funcname,來判斷執行哪個函數。但感覺這種方式,後期拓展性、維護起來都比較麻煩。希望能討論一下
女神的闺蜜爱上我2017-06-14 10:55:27
使用eval可以將字串當作程式碼來執行,並傳回結果:
def func1(a,b):
return a+b
s = eval("func1(1,2)")
print(s)
# 3
用一個循環,遍歷Json檔案的所有items
將函數名稱和參數,轉換為字串。
eval執行字串
處理回傳值