在 Flask-SocketIO 上使用 ssl 设置 ping_timeout

Posted

技术标签:

【中文标题】在 Flask-SocketIO 上使用 ssl 设置 ping_timeout【英文标题】:Set ping_timeout with ssl on Flask-ScoketIO 【发布时间】:2021-11-21 18:20:30 【问题描述】:

我正在尝试使用此配置运行 flask-socketIO + Gevent:

应用程序.py

if __name__ == "__main__":    
    socketio.run(
        flask_app,
        host='127.0.0.1',
        port=5000, 
        ping_timeout =  10 * 60 * 1000,
        keyfile='key.pem',
        certfile='cert.pem',
    )

但我收到此错误:

File "C:\Users\XXXXXXXXXXX\anaconda3\envs\atrio\lib\site-packages\gevent\server.py", line 233, in wrap_socket_and_handle
    with _closing_socket(self.wrap_socket(client_socket, **self.ssl_args)) as ssl_socket:
TypeError: wrap_socket() got an unexpected keyword argument 'ping_timeout'

还有其他方法可以发送更改 ping_timeout 值吗?

【问题讨论】:

【参考方案1】:

您将适用于 Web 服务器的选项与适用于 Socket.IO 的选项混合在一起。

ping_interval 适用于 Socket.IO。您可以在创建 SocketIO() 对象时传递它,或者如果您愿意,可以在 socketio.init_app() 调用中传递它。

旁注:ping_interval 值以秒为单位,而不是毫秒。此外,对于 99+% 的应用程序,默认值是最佳值,因此我建议您不要更改它。

【讨论】:

以上是关于在 Flask-SocketIO 上使用 ssl 设置 ping_timeout的主要内容,如果未能解决你的问题,请参考以下文章

Flask-Socketio 应用程序在 Heroku 上出现超时错误

使用flask和flask-socketio配置nginx、uwsgi

flask socketio 踩坑记录

访问 flask-socketio 会话的问题

flask-SocketIO 和 eventlet 有问题

[翻译] flask-SocketIO