这段代码有什么bug
main.py
import requests, json
from flask import Flask, session, make_response, redirect, url_for
app = Flask(__name__)
with open('web/jpg/1.jpg', 'rb') as f:
img = f.read()
result = requests.post('http://127.0.0.1:24401/', params={'threshold': 0.1},
data=img).json()
print(result["results"][0]["confidence"])
global traceback
# 全局化
traceback = result["results"][0]["confidence"]
# 变量赋值
#路径定义,方便单片机B接收
@app.route('/', methods=['GET', 'POST'])
def data_handler(confidence) :
r = make_response('Accomplished
')
r.set_cookie('confidence', traceback)
return json.dumps({'confidence': traceback})
#转化为Python字典
app.run(port= 80, debug=True)
#port端口号 默认于127.0.0.1运行
client.py
import threading
import urllib.request, requests
handler_url = 'http://......'
#此处为main.py中的ip地址+main.py中/data/api/handle路径
class check_data(threading.Thread) :
def __init__(self, confidence) :
threading.Thread.__init__(self)
self.event = threading.Event()
self.confidence = confidence
def run(self) :
global handler_url
try :
while not self.event.is_set() :
r = requests.get(handler_url)
Specimen = r.cookies['confidence']
print(Specimen)
except :
pass
self.event.wait(1)
#()可以更改即更改间隔时间
你应该是想发送照片到端口,获取cookie,打印,启动web,接受结果。
两个代码修改成同一文件:
import requests, json, threading
from flask import Flask, session, make_response, redirect, url_for
app = Flask(__name__)
handler_url = 'http://......'
with open('web/jpg/1.jpg', 'rb') as f:
img = f.read()
result = requests.post('http://127.0.0.1:24401/', params={'threshold': 0.1}, data=img).json()
print(result["results"][0]["confidence"])
global traceback
# 全局化
traceback = result["results"][0]["confidence"]
# 变量赋值
#路径定义,方便单片机B接收
@app.route('/', methods=['GET', 'POST'])
def data_handler():
r = make_response('Accomplished')
r.set_cookie('confidence', traceback)
return json.dumps({'confidence': traceback})
#转化为Python字典
class check_data(threading.Thread) :
def __init__(self):
threading.Thread.__init__(self)
self.event = threading.Event()
def run(self) :
global handler_url
try :
while not self.event.is_set() :
r = requests.get(handler_url)
Specimen = r.cookies['confidence']
print(Specimen)
except :
pass
self.event.wait(1)
#()可以更改即更改间隔时间
app.run(port= 80, debug=True)
#port端口号 默认于127.0.0.1运行
这段代码中没有明显的错误,但是可能存在以下几个问题:
可能是网络问题,无法访问该地址,可以检查网络连接是否正常。
该地址是否存在,请确认该地址是否正确。
数据格式是否正确,请检查是否有必要的键和值。
检查引用的文件是否存在。
以上是可能存在的问题,可以对代码进行更深入的检查。
该回答引用ChatGPT
请参考下面的解决方案,如果可行,还请点击 采纳,感谢!
main.py中有几个问题:
1、在 data_handler 函数中,没有使用参数 confidence。
2、在设置 cookie 时,使用的变量名为 traceback,而不是 confidence。
3、在返回的 JSON 中,键的名称为 confidence,但在设置 cookie 时使用的名称为 traceback。
4、make_response 函数的返回值需要修改,原来的字符串需要删除。
修的代码如下:
import requests, json
from flask import Flask, session, make_response, redirect, url_for
app = Flask(__name__)
with open('web/jpg/1.jpg', 'rb') as f:
img = f.read()
result = requests.post('http://127.0.0.1:24401/', params={'threshold': 0.1}, data=img).json()
confidence = result["results"][0]["confidence"]
@app.route('/', methods=['GET', 'POST'])
def data_handler():
r = make_response(json.dumps({'confidence': confidence}))
r.set_cookie('confidence', str(confidence))
return r
app.run(port= 80, debug=True)
client.py中有几个问题:
1、在获取 cookie 时使用的键为 'confidence',但它可能不存在,因此应该捕获 KeyError 异常。
2、该线程不会退出,因为事件 event 永远不会设置为真,并且 event.wait() 不会返回。
下面是修改后的代码:
import threading
import requests
handler_url = 'http://......'
class CheckData(threading.Thread):
def __init__(self, confidence):
threading.Thread.__init__(self)
self.confidence = confidence
self.stopped = False
def run(self):
global handler_url
while not self.stopped:
try:
r = requests.get(handler_url)
specimen = r.cookies['confidence']
print(specimen)
except KeyError:
pass
self.stopped = self.stopped or self.confidence == specimen
# 退出循环的条件
self.event.wait(1)
不知道你这个问题是否已经解决, 如果还没有解决的话: