flask 定时任务and挡板

util新建oper_sql.py文件数据库操作

#coding:utf-8

import  pymysql

class Opre_sql:
    def __init__(self):
        self.db=pymysql.connect(host='192.168.1.30',port=3306,user="root",password="123456",db="test",charset="utf8")
        self.curcor=self.db.cursor()

    def insert_sql(self,serialNo,amount,inst_code):
        sql="insert into paygw.order_test (serialNo,amount,`status`,inst_code) VALUES ({0},{1},'process','{2}')".format(serialNo,amount,inst_code)
        self.curcor.execute(sql)
        self.db.commit()

    def sel_status(self):
        sql="select * from paygw.order_test where `status`='process'"
        self.curcor.execute(sql)
        data=self.curcor.fetchall()
        #print(data)
        return data
    def update_sattus(self,serialNo,status):
        sql="update  paygw.order_test set `status`= '{0}' where serialNo='{1}'".format(status,serialNo)
        self.curcor.execute(sql)
        self.db.commit()

    def update_notify_result(self,serialNo):
        sql="update  paygw.order_test set core_notif_result= '已通知' where serialNo='{0}'".format(serialNo)
        self.curcor.execute(sql)
        self.db.commit()

if __name__=="__main__":
    a=Opre_sql()
    a.insert_sql(1234,30,'cib')
    #a.sel_status()

asy_servers.py 挡板和定时任务内容

from flask import Flask, request
import json
import time
from util.oper_sql import Opre_sql
from flask_apscheduler import APScheduler
import requests



oper_sql=Opre_sql()
class Config(object):  # 创建配置,用类
    # 任务列表
    JOBS = [
        # {  # 第一个任务
        #     'id': 'job1',
        #     'func': '__main__:job_1',
        #     'args': (1, 2),
        #     'trigger': 'cron', # cron表示定时任务
        #     'hour': 19,
        #     'minute': 27
        # },
        {  # 第二个任务,每隔5S执行一次
            'id': 'job2',
            'func': '__main__:sany_order',  # 方法名
            #'args': (1, 2),  # 入参
            'trigger': 'interval',  # interval表示循环任务
            'seconds': 5,
        }
    ]


def sany_order():
    process_order=oper_sql.sel_status()
    if len(process_order)==0:
        print("无需处理")
    else:
        for i in range(len(process_order)):
            serialNo=process_order[i][0]
            amount=float(process_order[i][1])
            #status=process_order[i][2]
            if amount<=10.00:
                tranStatus="0"
                status='fail'
                respMsg='处理失败'
                respCode='E0001'
            else:
                tranStatus="1"
                status='success'
                respMsg='处理成功'
                respCode = 'E0000'
            print("tranStatus:",tranStatus)
            print(serialNo,type(serialNo), type(amount))
            url="http://192.168.30.33:8087/outter/payCib/deputeAsyNotify"
            data={
 "version":"1.0.2",
 "mchtId":"xiaoxian001",
 "mac": "XggLWznW3Ov02PsPenuRhEAeVkXyezg3MxzyukvR847RKJV2Vh5RBNuAR2NpiiuV646k+5SNTfcxPPJhs+3gDqrvICalfZMgNb91Hc00uLXpcIIHTPK4sD2tXc+QEIzKMuNFQvehPPHohGaAP3ekLBHKjHVMHGsyzVEQkpQrj9s=",
 "signType": "RSA",
 "serialNo":serialNo,
 "respCode":respCode,
 "respMsg":respMsg,
 "traceNo":"2001201905131440303127006",
 "stateTime":"20190513144224",
 "tranStatus":tranStatus,
 "transTime":"20190513144030",
 "acctNo":"6214622521000633165",
 "amount":amount,
 "currency":"156",
 "bankNo":"05004",
 "bizType":"3001"


}
            headers={"Content-Type":"application/json"}
            res=requests.post(url,data=json.dumps(data),headers=headers)
            print("回掉响应信息:",res.text)

            oper_sql.update_sattus(serialNo,status)#更新表状态
            print(serialNo,amount,status)

app = Flask(__name__)
app.config.from_object(Config())  # 为实例化的flask引入配置


@app.route('/depute', methods=['POST'])
def depute():
    if request.method=="POST":
        serialNo=request.json["serialNo"]
        amount=request.json["amount"]
        oper_sql.insert_sql(serialNo,amount,'cib')
        print(serialNo,amount)
        data={
    "respCode": "A0523",
    "respMsg": "订单处理中",
    "version": "1.0.2",
    "mchtId": "ORG07*************089",
    "signType": "RSA",
    "mac": "go/USPoYMpD4hiWokrsB3imKg0ZSWkV/PmO+IE4HMELFo1RlUdlt/WG58OGpfxuBTeaB3W/9Z8r6ofW+o2Y1teNBwtB02pQTiPte1AmlvjE9zvD8KcPgrhFzBy0tNnpA8k89cfLJCHri3aETzmWRaaSxasS/JkoHTQ0j7iB5QdQ=",
    "serialNo": "2****************006",
    "traceNo": "3*****************60154",
    "transTime": "20210823175339",
    "stateTime": "20210823174720",
    "tranStatus":'2',
    "acctNo": "6****************65",
    "bankNo": "05013",
    "amount": float(amount),
    "currency": "156",
    "desc": "测试用",
    "ext": ""
}
        #print(type(data))
        return json.dumps(data,ensure_ascii=False)

@app.route('/core_notif',methods=['POST','GET'])
def core_notif():
    if request.method=='POST':
        #serialNo=request.json["serialNo"]
        data={"respCode":"G0000","respMsg":"交易成功"}
        oper_sql.update_notify_result("20210910000000000008")
        return json.dumps(data,ensure_ascii=False)



if __name__ == '__main__':
    scheduler = APScheduler()
    scheduler.init_app(app)
    #scheduler.start()
    app.run(debug=True, host='127.0.0.1', port='8080')
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容