![](/img/trans.png)
[英]Flask SocketIO web app refuses to accept connections from python file
[英]How to make Python socket accept connections in background in a Flask App?
我是 Flask 的初学者。 我在 Flask 的一个小网站上工作,我的目标是在后台设置一个接受连接的套接字。 这是代码:
@app.route('/dashboard/')
@login_required
def dashboard_page():
s = lancer_socket()
accepter_msg(s) #if i comment out this line, the template loads
return render_template('dashboard.html',info = info,tel_conns=tel_conns)
但是,函数 'accepter_msg' 使模板无法加载。 这是代码:
def accepter_msg(socket):
while True:
Client, addresse = socket.accept()
print('Connecté à: ' + addresse[0] + ':' + str(addresse[1]))
start_new_thread(threaded_client, (Client, ))
我的目标是加载仪表板页面,并使套接字接受连接并在后台接收数据(之后,我将使用修改后的变量(信息和 tel_conns)刷新模板:
render_template('dashboard.html',info = info,tel_conns=tel_conns)
我需要使用一个简单的 python 套接字,而不是 socketio 或其他任何东西。 谁能帮我 ?
如果您正在设置套接字服务器以接受 websocket 连接,请考虑使用Flask-SocketIO 。
socket.accept
调用是一个阻塞函数调用,这意味着该函数在客户端连接到它之前不会返回。 因此,当此阻塞函数调用未返回时,您的render_template
甚至都不会启动。 函数不返回仅仅意味着它挂在那里。
Client, addresse = socket.accept()
如果你真的想使用socket.accept
,你需要让它成为一个非阻塞套接字。 怎么做? 这篇 realpython 文章有很好的例子。
https://realpython.com/python-sockets/
另请阅读此官方文档Socket Programming HOWTO以更好地了解套接字编程。
您正在使用阻止以下命令的while True
循环。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.