運維自動化 - 如何用外部讀取的文件內容來決定python函數的執行順序以及參數?
PHP中文网
PHP中文网 2017-06-14 10:53:27
0
1
882

現在做一套伺服器上程式的自動工具,有啟動停止、調整的各種操作。但是不同節點上的部署內容都不只相同,假設現在已經做好了各種功能的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,來判斷執行哪個函數。但感覺這種方式,後期拓展性、維護起來都比較麻煩。希望能討論一下

PHP中文网
PHP中文网

认证高级PHP讲师

全部回覆(1)
女神的闺蜜爱上我

使用eval可以將字串當作程式碼來執行,並傳回結果:

def func1(a,b):
    return a+b

s = eval("func1(1,2)")
print(s)
# 3
  1. 用一個循環,遍歷Json檔案的所有items

  2. 將函數名稱和參數,轉換為字串。

  3. eval執行字串

  4. 處理回傳值

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!