设计思想:
1、配置文件加载
2、主程序页面,os.environ()设置全局变量
3、__init__.py文件的使用
4、加载插件,可插拔插件的方式实现功能
5、三种实现方式的兼容性
6、API验证
7、run.py主函数
8、api构造可插拔式插件处理逻辑
知识点:
1、importlib,requests
2、rsplit(‘.‘,maxsplit=1)
3、抽象类抽象方法,可以用抽象类实现,也可以用下面方法实现,在父类中方法下加上如下代码,则在子类中必须有这个同名方法
raise NotImplementedError(‘必须实现exec方法‘)
可以用这个方式来实现约束,如果不执行,则抛出异常
4、线程池、进程池
5、request.POST的data和json方式(请求头和方式都不同)
我们要发送字典,requests默认也是data方式,发送到后台取到的是k1=1&k2="xx"&k3=[1,2,3],如果要发送k4:{}这个字典,后台取的时候只取到key而没有value
response = requests.post(self.api,json=server_dict) # 1. 字典序列化;2. 带请求头 content-type: application/json
改成json后,自动改变了请求头
如果是ajax发送字典,需要手动修改请求头headers:{‘content-type‘:‘application/json‘}
数据data:JSON.stringfy({k1:1,k2:"xx",k3:"[1,2,3]},后台在request.body里面拿数据,取到的也是字符串,反序列话后就是字典。
ajax和form默认的请求头都是 content-type:application/x-www-form-urlencoded
发送数据格式data{k1:1,k2:"xx",k3:[1,2,3]},后台取到的数据格式是k1=1&k2="xx"&k3=[1,2,3]
6、paramiko SSH连接,用户名密码方式,公钥私钥方式
7、traceback类,获取错误详细信息
8、Python 字典(Dictionary) update()方法,dict.update(dict2),dict2添加到dict里
9、集合生成式(参考列表生成式 ) old_disk_slot_set = {obj.slot for obj in new_disk_info_list}