代码如下,正确结果应该是每获取到一个有效信息(即code==0时),用户wang余额扣除一个点,实际执行效果扣除余额不准确,获取到一次有效信息会出现扣除用户两个点或者三个点的情况。用户访问频率较高,一秒可能会访问接口3到4次。我能想到的可能是由于没有加timeout,访问原始API时信息还没有及时返回,用户又进行了下一次访问,导致扣除余额混乱。来先生指教,谢谢!
headers = {'Connection': 'close'}
src_codeurl = 'http://api.kkjkj.cn/getmsg?token=544548748455'' #原始API
print(src_codeurl)
try:
reponse = requests.get(src_codeurl, headers=headers, verify=False) # 访问原始API
except requests.exceptions.Timeout as e:
result = {'code': 3, 'message': ''}
except requests.exceptions.ConnectionError as e:
result = {'code': 3, 'message': ''}
else:
result = json.loads(reponse.text) # 解析返回json
print(result)
code = result.get('code') # 获取code值,code值为0时说明取到有效信息
if code == 0:
sql = "update scmsg set yue=yue-1 where user =wang" #成功获取到信息,扣除用户wang相应余额
with db_lock:
db.is_connected()
db.cursor.execute(sql)
msg = result['msg'] # 获取有效信息内容
result = {'code': 0, 'msg': 'succ', 'Vmsg': msg}#自定义的返回格式