搜索

首页  >  问答  >  正文

运维自动化 - 如何用外部读取的文件内容来确定python函数的执行顺序以及参数?

现在做一套服务器上程序的自动工具,有启停、调整的各种操作。但是不同节点上的部署内容都不仅相同,假设现在已经做好了各种功能的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中文网2753 天前986

全部回复(1)我来回复

  • 女神的闺蜜爱上我

    女神的闺蜜爱上我2017-06-14 10:55:27

    使用eval可以将字符串当作代码来执行,并返回结果:

    def func1(a,b):
        return a+b
    
    s = eval("func1(1,2)")
    print(s)
    # 3
    1. 用一个循环,遍历Json文件的所有items

    2. 将函数名和参数,转换为字符串。

    3. eval执行字符串

    4. 处理返回值

    回复
    0
  • 取消回复