gpt4 book ai didi

python - 如何使用 Flask 在 Python 中将数据从服务器发送到客户端?

转载 作者:行者123 更新时间:2023-12-03 09:07:28 24 4
gpt4 key购买 nike

我正在制作一个将数据发送到客户端的应用程序,然后客户端打印数据。

我使用Flask作为处理服务器端的后端框架,以及另一个为当前客户端生成随机ID的python脚本,客户端每4秒检查一次是否有新数据进入,如果它获取数据应该打印它。

后端代码

@app.route('/data/api/interact/<string:client_id>', methods=['GET', 'POST'])
@login_required
def interact(client_id):
global data

form = Interact()
data = ''

if form.is_submitted():
get_data = form.ct.data

if get_data == 'hello':
data = 'Hi how are you?'

return redirect(url_for('data_handler', client_id=client_id, data=form.ct.data))

return render_template('interact.html', form=form, client_id=client_id)

@app.route('/data/api/interact/handler/', methods=['GET', 'POST'])
def data_handler():
client_id = request.args.get('client_id')
get_data = request.args.get('data')
return json.dumps({'client_id': client_id, 'data': get_data})

客户端脚本

handler_url = 'http://192.168.0.102:5000/data/api/interact/handler/'

class check_data(threading.Thread):
def __init__(self, client_id):
threading.Thread.__init__(self)
self.event = threading.Event()
self.client_id = client_id

def run(self):
global handler_url

try:
while not self.event.is_set():
file = urllib2.urlopen(handler_url)
xml = file.read()
print xml
file.close()
except:
pass

self.event.wait(4)

def new_client():
client_id = 'ClientId' + str(random.randrange(1, 500))
return client_id

client_id = 'null'

while client_id == 'null':
client_id = new_client()

if 'null' not in client_id:
break

print 'Client ID: ' + client_id

client = check_data(client_id)
client.start()

一切正常,但如果我将数据从服务器发送到客户端,它会打印:

{'data': '', 'client_id': null}

最佳答案

client_id 未传递给服务器,服务器期望获取 client_iddata 作为查询参数。相反,您访问的网址不带任何参数

file = urllib2.urlopen(handler_url)

Passing query string parameters GET 请求可以通过

完成
url = handler_url + '?client_id' + self.client_id +'&data=YOURDATA_HERE'
file = urllib2.urlopen(url)

您可以使用urlencode以更优雅的方式实现此目的。

关于python - 如何使用 Flask 在 Python 中将数据从服务器发送到客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45909165/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com