我有一个带有flask的flask2.7服务器,flask_socketio,uwsgi
以下是代码示例:
from fit.app import app
from flask_socketio import SocketIO, emit
from fit.query import getESValue
socketio = SocketIO(app)
@socketio.on('get_client_info')
def handle_message(data):
client = data["client"]
p_id = data["p_id"]
esvalues = getESValue(client, None, p_id)
emit('client_results', {"client": client, "data": esvalues})
if __name__ == "__main__":
socketio.run(app)
esvalues = getESValue(客户端,无,p_id)是一项高权重操作,最多可能需要15分钟。
但是它已成功完成,我正在尝试将结果发送到客户端并收到以下错误:
收到错误 Traceback(最近一次调用最后一次): 在_websocket_hand中输入文件“venv / local / lib / python2.7 / site-packages / engineio / socket.py”,第209行 LER self.receive(PKT) 文件“venv / local / lib / python2.7 / site-packages / engineio / socket.py”,第53行,收到 self.send(packet.Packet(packet.PONG,pkt.data)) 文件“venv / local / lib / python2.7 / site-packages / engineio / socket.py”,第67行,发送 提高IOError('套接字已关闭') IOError:套接字已关闭
然后这一个:
错误:(9,'错误的文件描述符') Wed Jul 26 13:29:28 2017 Greenlet at 0x7f4ba547be10:select_greenlet_runner(9,)>失败并出现错误
我认为我正在尝试使用已关闭的套接字连接。 如何在任务完成15分钟之前保持活着?
答案 0 :(得分:-1)
可以通过在启动服务器时设置超时选项来解决此问题。可以通过更改此行来实现:
socketio.run(app)
要
socketio.run(app, ping_timeout=3600)
更改3600以符合您的要求