def reupload_vehicle_plate(): # 查询过去一天上传失败的 query_items = db_session.query(VehicleInfoOrm).filter( and_( VehicleInfoOrm.create_time > (datetime.now() - timedelta(days=2)), VehicleInfoOrm.upload_flag == 0)) for item in query_items: vehicle_info_json = item.vehicle_info # 将data 值base64 后,使用SHA256WithRSA 计算签名 sign = XlapiSignature.to_sign_with_private_key( vehicle_info_json, private_key=ThirdEtcApi.PRIVATE_KEY) upload_body = dict(appid=ThirdEtcApi.APPID, data=vehicle_info_json, sign=sign.decode(encoding='utf8')) logger.info('上传车辆信息: {}'.format(vehicle_info_json)) try: res = http_session.post(ThirdEtcApi.ETC_UPLOAD_URL, data=upload_body) if res.json()['code'] == '000000': db_session.delete(item) else: item.upload_fail_count += 1 except: item.upload_fail_count += 1 logger.error(traceback.format_exc()) # 数据修改好后提交 try: db_session.commit() except: db_session.rollback() logger.error(traceback.format_exc())
def reupload_etc_deduct_from_db(): """ 查找数据库中没能成功上传的数据,重新上传 :return: """ # 查询过去一天上传失败的 query_items = db_session.query(ETCFeeDeductInfoOrm).filter( and_( ETCFeeDeductInfoOrm.create_time > (datetime.now() - timedelta(days=1)), ETCFeeDeductInfoOrm.upload_flag == 0)) for item in query_items: # 调用第三方api request_flag = ThirdEtcApi.etc_deduct_upload(item.etc_info) if request_flag: # 如果上传成功,更新upload_flag为1 item.upload_flag = 1 else: # 如果上传失败,更新upload_fail_count 加 1 item.upload_fail_count += 1 # 数据修改好后提交 try: db_session.commit() except: db_session.rollback() logger.error(traceback.format_exc())