欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

python实现API调用缓存

最编程 2024-07-06 07:14:47
...
import json def get_variable_name(var): '''变量转变量名''' local_vars=globals() return [name for name, value in local_vars.items() if value is var][0] def quick_exec(func,params): '''通过参数生成UUID,如果缓存中存在则直接获取,否则执行实际的函数,之后保存结果''' cache_path="cache_data.json" records={} uuid="_".join([str(x) for x in params]) try: with open(cache_path,"r") as f: records=json.load(f) except: pass if uuid in records: ret=records[uuid]["result"] else: ret=func(params) records[uuid]={"result":ret,"params":{}} for var in params: records[uuid]["params"][get_variable_name(var)]=var with open(cache_path,"w") as f: json.dump(records,f,indent=4) return ret def sdk_api(params): '''实际的调用''' print("sdk_api call in:",params) return sum(params) def l0(): globals()['a']=1 globals()['b']=2 globals()['c']=3 globals()['d']=4 globals()['e']=5 params=(globals()['a'],globals()['b'],globals()['c'],globals()['d'],globals()['e']) ret=quick_exec(lambda x:sdk_api(x),params) print(ret) ret=quick_exec(lambda x:sdk_api(x),params) print(ret) globals()['b']=3 params=(a,b,c,d,e) ret=quick_exec(lambda x:sdk_api(x),params) print(ret) ret=quick_exec(lambda x:sdk_api(x),params) print(ret) def l1(): l0() def main(): l1() main()

推荐阅读