I'm new to Render , and I make a simple flask web socket
I use these modules: ,flask_socketio ,flask ,gunicorn (to run my script on Render host)
Here is my code for server side:
from flask import Flask
from flask_socketio import SocketIO , emit
app = Flask("application")
socket = SocketIO(app)
@app.route("/")
def home():
return "This is the server side !!"
@socket.on("connect")
def cl_con():
print("A new client connected !!")
@socket.on("disconnect")
def cl_dis():
print("A client disconnected !!")
@socket.on("message")
def message(data):
emit("message",data)
if __name__ == "__main__":
socket.run(app)
and my client side :
import socketio as io
import threading as th
name = ""
while (name == ""):
name = input("Your name :")
def message():
while True:
msg = input()
if (msg == "exit"):
client.disconnect()
print("Disconnected !!")
exit(0)
else:
client.emit("message",f"{name}:{msg}")
client = io.Client()
client.connect("https://my_domain_name.onrender.com")
client.emit("message",f"{name} join this chat !!")
t = th.Thread(target=message)
t.daemon = True
t.start()
@client.on("message")
def msg(data):
print(data)
client.wait()
I'm trying to connect to web socket by my client code which run on my computer , it works , but the problem is this:
1- after 10 second server side give me this error , and it continue showing this error every 5 second :
**[2025-03-07 09:05:06 +0000] [74] [CRITICAL] WORKER TIMEOUT (pid:87)
[2025-03-07 09:05:06 +0000] [87] [ERROR] Error handling request /socket.io/?transport=websocket&EIO=4&sid=E6-m_FkHPBxWcm5MAAAA&t=1741338267.3122072
Traceback (most recent call last):
File "/opt/render/project/src/.venv/lib/python3.11/site-packages/gunicorn/workers/sync.py", line 134, in handle
self.handle_request(listener, req, client, addr)
File "/opt/render/project/src/.venv/lib/python3.11/site-packages/gunicorn/workers/sync.py", line 177, in handle_request
respiter = self.wsgi(environ, resp.start_response)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/render/project/src/.venv/lib/python3.11/site-packages/flask/app.py", line 1536, in __call__
return self.wsgi_app(environ, start_response)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/render/project/src/.venv/lib/python3.11/site-packages/flask_socketio/__init__.py", line 42, in __call__
return super().__call__(environ, start_response)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/render/project/src/.venv/lib/python3.11/site-packages/engineio/middleware.py", line 63, in __call__
return self.engineio_app.handle_request(environ, start_response)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/render/project/src/.venv/lib/python3.11/site-packages/socketio/server.py", line 434, in handle_request
return self.eio.handle_request(environ, start_response)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/render/project/src/.venv/lib/python3.11/site-packages/engineio/server.py", line 286, in handle_request
packets = socket.handle_get_request(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/render/project/src/.venv/lib/python3.11/site-packages/engineio/socket.py", line 92, in handle_get_request
return getattr(self, '_upgrade_' + transport)(environ,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/render/project/src/.venv/lib/python3.11/site-packages/engineio/socket.py", line 151, in _upgrade_websocket
return ws(environ, start_response)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/render/project/src/.venv/lib/python3.11/site-packages/engineio/async_drivers/_websocket_wsgi.py", line 15, in __call__
ret = self.app(self)
^^^^^^^^^^^^^^
File "/opt/render/project/src/.venv/lib/python3.11/site-packages/engineio/socket.py", line 225, in _websocket_handler
p = websocket_wait()
^^^^^^^^^^^^^^^^
File "/opt/render/project/src/.venv/lib/python3.11/site-packages/engineio/socket.py", line 156, in websocket_wait
data = ws.wait()
^^^^^^^^^
File "/opt/render/project/src/.venv/lib/python3.11/site-packages/engineio/async_drivers/_websocket_wsgi.py", line 32, in wait
return self.ws.receive()
^^^^^^^^^^^^^^^^^
File "/opt/render/project/src/.venv/lib/python3.11/site-packages/simple_websocket/ws.py", line 96, in receive
if not self.event.wait(timeout=timeout):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/threading.py", line 629, in wait
signaled = self._cond.wait(timeout)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/threading.py", line 327, in wait
waiter.acquire()
File "/opt/render/project/src/.venv/lib/python3.11/site-packages/gunicorn/workers/base.py", line 204, in handle_abort
sys.exit(1)
SystemExit: 1**
2-when I try to connect to server by two clients , the second client get timeout error !!
any help will appreciated