gpt4 book ai didi

python Flask套接字发送调用永远不会返回

转载 作者:太空宇宙 更新时间:2023-11-03 17:48:07 25 4
gpt4 key购买 nike

我编写了一个 Flask View 函数,它通过套接字向本地服务发送查询,然后处理数据并在渲染后返回它。

@app.route('/_search', methods=["GET", "POST"])
@app.route('/_search/', methods=["GET", "POST"])
def searchQuery():

# get the argument that were passed using get
t_query = request.args.get('query')

print(t_query)

t_s = get_searchserver_socket()
t_s.send("C, something")

t_data = t_s.recv(1024)
print(t_data)
return t_data

#abort(404)

我只是使用flask中的全局变量来保存套接字,这样它就不会每次都重新创建它:

def get_searchserver_socket():
t_socket = getattr(g, '_socket', None)
if t_socket is None:
t_socket = g._socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
t_socket.connect((search_server_ip, search_server_port))
return t_socket

问题在于,在 View 函数中,套接字发送调用 (t_s.send) 被卡住,实际上从未发送数据。这是为什么?

谢谢

最佳答案

flask.g 仅适用于当前请求。它存在于应用程序上下文中,您可以在此处阅读更多信息:http://flask.pocoo.org/docs/0.10/appcontext/

您每次仍然会重新创建此套接字。如果您希望它持久化,您必须在 Flask 应用程序上下文之外(在 Flask 应用程序之外)创建套接字,然后从那里使用它。

关于python Flask套接字发送调用永远不会返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29475367/

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