[Python] Run a simple flask web socket on Render

Discussão em 'Python' iniciado por Stack, Março 7, 2025.

  1. Stack

    Stack Membro Participativo

    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

    Continue reading...

Compartilhe esta Página