python-socketio 中的连接错误(来自 None 的 exceptions.ConnectionError(exc.args[0]))

问题描述 投票:0回答:1

我编写了一个代码并使用 python-socketio,它工作得很好。

但有时(我的意思是每运行 10 或 20 次)我会收到以下错误:

sio.connect(URL, transports=["websocket"], wait=False)  File "/usr/local/lib/python3.9/site-packages/socketio/client.py", line 148, in connect  raise exceptions.ConnectionError(exc.args[0]) from None  socketio.exceptions.ConnectionError: Connection error

当我停下来再次跑步时,它就起作用了。

这个问题的根源是什么?我该怎么办?

我只能找到那里发生错误的那段代码,仅此而已。

python socket.io python-socketio
1个回答
0
投票

是的,即使我也遇到了同样的问题。我正在通过以下简单的服务器和客户端示例学习 python-socketio

服务器.py

import socketio


sio = socketio.Server(async_mode='eventlet')

# Web Server Gateway Interface
app = socketio.WSGIApp(sio)

connected_clients = {}


@sio.event
def connect(sid, environ):
    print(f"Sensor connected: {sid}")
    print(f"Welcome, Sensor {sid}")


@sio.event
def sensor_data(sid, data):
    print(f"Data from sensor {sid}: {data}")

    processed_data = process_sensor_data(data)
    try:
        sio.emit('server_response', f'Reply from server to {sid} : {processed_data}')
    except Exception as e:
        print(f"Error sending data to {sid}: {e}")


@sio.event
def disconnect(sid):
    print(f"Sensor disconnected: {sid}")


def process_sensor_data(data):
    if 'temperature' in data:
        return f"Processed temperature data: {data['temperature']} °C"
    elif 'humidity' in data:
        return f"Processed humidity data: {data['humidity']} %"
    else:
        return "Unknown sensor type"


if __name__ == '__main__':
    import eventlet

    print("Server started")
    eventlet.wsgi.server(eventlet.listen(('0.0.0.0', 5000)), app)

客户端.py

import time
import socketio
import random

sio = socketio.Client()


@sio.event
def connect():
    print("Connected to server")

    while True:
        temperature_data = {
            'temperature': round(random.uniform(20, 30), 2)
        }

        sio.emit('sensor_data', temperature_data)

        time.sleep(20)


@sio.event
def server_response(data):
    print(f'Message from the server: {data}')


@sio.event
def disconnect():
    print("Disconnected from server")


sio.connect('http://<Server-ip>:5000', transports=['websocket', 'polling'])

input("Press Enter to exit...\n")

sio.disconnect()

server.py 位于运行的 ec2 实例中,当我尝试连接服务器和客户端时,它会建立连接并开始通信,但是一旦我停止客户端,当我再次重新运行客户端时,它会给出相同的错误

错误信息:

raise exceptions.ConnectionError(exc.args[0]) from None socketio.exceptions.ConnectionError: Connection error
© www.soinside.com 2019 - 2024. All rights reserved.