需求:对支付接口做并发,验证账户金额的扣款(-)冻结(+),然后把执行结果写到一个日志文件
# @Time : '2021-6-19 07:58' # @Author : 'pc.kang' import time,json,requests from threading import Thread,Lock payid_list = {11111, 22222, 33333, 44444, 55555, 66666, 77777, 88888, 99999, 00000} url = "http://xxx.com/api/Pay.do" headers = { "Connection": "keep-alive", "Content-Length": "23", "Accept": "application/json, text/plain, */*", "X-Requested-With": "XMLHttpRequest", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36", "Content-Type": "application/json", "Origin": "http://xxx.com", "Referer": "http://xxx/api/", "Accept-Encoding": "gzip, deflate", "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8", "Cookie": "11379a8f66bf4fea9c2b8620642e33b0" } def run(lock): for num in payid_list: param = {"id": num} body = json.dumps(param) lock.acquire() res = requests.post(url=url, data=body, headers=headers) print(res.text) result = json.loads(str(res.text)) # if(result["code"] == "0"): # print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + " 付款单id: %s 付款成功 \n" % num) # else: # print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + " 付款单id: %s 付款失败,错误信息:%s \n" %(num,res.text)) if(result["code"] == "0"): with open("log.txt", "a", encoding="utf8") as fp: fp.write(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + " 付款单id: %s 付款成功 \n" %num) else: with open("log.txt", "a", encoding="utf8") as fp: fp.write(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + " 付款单id: %s 付款失败,错误信息:%s \n" %(num,res.text)) lock.release() if __name__=="__main__": lock = Lock() t_list = [Thread(target=run,args=(lock,))] print(t_list) for t in t_list: t.start() for t in t_list: t.join()