• 并发编程 六


    支付接口并发

    需求:对支付接口做并发,验证账户金额的扣款(-)冻结(+),然后把执行结果写到一个日志文件

    # @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 付款成功 
    " % num)
            # else:
            #     print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + "  付款单id: %s 付款失败,错误信息:%s 
    " %(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 付款成功 
    " %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 
    " %(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()
    
    更多学习笔记移步 https://www.cnblogs.com/kknote
  • 相关阅读:
    vimrc 配置 史上最牛
    nmap 黑客 端口扫描(转)
    linux export 命令(转)
    【引用】linux下编译静态库ranlib有什么用
    vim map nmap(转)
    vim 自定义命令 自定义快捷键(转)
    vimrc初学 vim 快捷键 map(转)
    vim 取消 查找 高亮
    Java内存模型(JMM)学习总结
    Struts2和Spring整合
  • 原文地址:https://www.cnblogs.com/kknote/p/14901996.html
Copyright © 2020-2023  润新知