parameter.py
1.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2020-02-12 13:17
# @Author : Lemon
# @File : check_args.py
# @Software: PyCharm
import json
from inspect import signature
def _is_json(data):
try:
res = json.loads(data)
if isinstance(res, int):
raise BaseException("非json格式")
return res
except:
return data
def join(func, payload):
'''
func 调用的函数
payload 传递的参数 # str or jsonstr
:return 组装好的提交参数
'''
sig = signature(func)
keys = sig.parameters.keys()
if tuple(keys):
data = _is_json(payload)
if isinstance(data, str):
payload = {tuple(keys)[0]: data}
else:
for k in data.copy().keys():
if k not in keys:
data.pop(k)
payload = data
else:
payload = {}
payload['fn'] = func
return payload
class Do():
def one(self, x):
print(locals())
def two(self, x, y):
print(locals())
def three(self, x, y, z):
print(locals())
def createGroup(self,message,user_ids):
print(locals())
if __name__ == '__main__':
d = Do()
from concurrent.futures import ThreadPoolExecutor
t = ThreadPoolExecutor(2)
f1 = join(d.two, {"x": 'x1', "y": 'y2', 'z': 'z3'})
f2 = join(d.one, 'x2')
f3 = join(d.createGroup,{"message":"12333","user_ids":[1,2,3,4,5]})
t.submit(**f1)
t.submit(**f2)
t.submit(**f3)