运维自动化 - 如何用外部读取的文件内容来确定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,来判断执行哪个函数。但感觉这种方式,后期拓展性、维护起来都比较麻烦。希望能讨论一下
问题解答
回答1:使用eval可以将字符串当作代码来执行,并返回结果:
def func1(a,b): return a+bs = eval('func1(1,2)')print(s)# 3
用一个循环,遍历Json文件的所有items
将函数名和参数,转换为字符串。
eval执行字符串
处理返回值
相关文章:
1. javascript - 数组原声方法中的一段代码2. html - eclipse 标签错误3. 求大神帮我看看是哪里写错了 感谢细心解答4. php自学从哪里开始?5. javascript - 怎么实现移动端页面滑动切换,从1可以滑到2 但是不能从2滑回1 这样的效果呢?6. javascript - JS设置Video视频对象的currentTime时出现了问题,IE,Edge,火狐,都可以设置,反而chrom却...7. 数据库 - MySQL 单表500W+数据,查询超时,如何优化呢?8. mysql多表查询9. phpstady在win10上运行10. javascript - 如果所有请求都放到actions 里面,那拿到的数据应该 放在哪里,state 还是vue实例里面的data?
