这段代码有什么bug

这段代码有什么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)

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^