Browse Source

maint: enable `websocket_ping_interval` by default in tornado server

wangweimin 3 năm trước cách đây
mục cha
commit
4bc0a2d068

+ 3 - 0
pywebio/platform/path_deploy.py

@@ -198,6 +198,9 @@ def path_deploy(base, port=0, host='',
     """
     """
 
 
     utils.MAX_PAYLOAD_SIZE = max_payload_size = parse_file_size(max_payload_size)
     utils.MAX_PAYLOAD_SIZE = max_payload_size = parse_file_size(max_payload_size)
+    # Since some cloud server may close idle connections (such as heroku),
+    # use `websocket_ping_interval` to  keep the connection alive
+    tornado_app_settings.setdefault('websocket_ping_interval', 30)
     tornado_app_settings.setdefault('websocket_max_message_size', max_payload_size)  # Backward compatible
     tornado_app_settings.setdefault('websocket_max_message_size', max_payload_size)  # Backward compatible
     tornado_app_settings['websocket_max_message_size'] = parse_file_size(tornado_app_settings['websocket_max_message_size'])
     tornado_app_settings['websocket_max_message_size'] = parse_file_size(tornado_app_settings['websocket_max_message_size'])
     gen = _path_deploy(base, port=port, host=host,
     gen = _path_deploy(base, port=port, host=host,

+ 3 - 0
pywebio/platform/tornado.py

@@ -347,6 +347,9 @@ def start_server(applications, port=0, host='',
 
 
     utils.MAX_PAYLOAD_SIZE = max_payload_size = parse_file_size(max_payload_size)
     utils.MAX_PAYLOAD_SIZE = max_payload_size = parse_file_size(max_payload_size)
 
 
+    # Since some cloud server may close idle connections (such as heroku),
+    # use `websocket_ping_interval` to  keep the connection alive
+    tornado_app_settings.setdefault('websocket_ping_interval', 30)
     tornado_app_settings.setdefault('websocket_max_message_size', max_payload_size)  # Backward compatible
     tornado_app_settings.setdefault('websocket_max_message_size', max_payload_size)  # Backward compatible
     tornado_app_settings['websocket_max_message_size'] = parse_file_size(
     tornado_app_settings['websocket_max_message_size'] = parse_file_size(
         tornado_app_settings['websocket_max_message_size'])
         tornado_app_settings['websocket_max_message_size'])