初始化socketIO太慢,使用python socketIO-client包

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

我在 python 中使用 socketIO-client 包来测试我的服务器代码。 这是一个简单的客户端,但运行以下行总是需要大约 1 分钟:

socketIO = SocketIO('localhost',3003)

我想知道如何解决这个问题?

我使用的是eventlet,并且没有在虚拟环境中安装socketIO-client。 会导致这个问题吗?

from socketIO_client import SocketIO, BaseNamespace
from datetime import datetime

Devices = {}

temp_time = datetime.now()

class Namespace(BaseNamespace):
    def on_connect(self):
        print('[Connected]')
        for device in Devices:
            self.emit('register', device)
            time.sleep(1)

def funcA():
    do something

def funcB():
    do something

print '1:', datetime.now()-temp_time
socketIO = SocketIO('localhost', 3003)
print '2:', datetime.now()-temp_time
socketIO.define(Namespace)

socketIO.on('eventA', funcA)
socketIO.on('eventB', funcB)
socketIO.wait()

客户端部分的输出:

1: 0:00:00.000074
DEBUG:root:localhost:3003/socket.io [transport selected] xhr-polling
DEBUG:root:localhost:3003/socket.io [heartbeat reset]
2: 0:01:00.019828
DEBUG:root:localhost:3003/socket.io [socket.io packet received] 0
[Connected]
python socket.io client
2个回答
0
投票

@Markw63 是正确答案。
我也有同样的问题,初始化代码SocketIO('0.0.0.0',9000)总是延迟大约10秒。 @Markw63 的建议救了我很多。 我有两个路由器,一个是有线的,另一个是无线的。
当我删除有线路由(route del default gw 192.168.1.1)后,代码:SocketIO('0.0.0.0',9000)运行得非常快,没有延迟。 将 ip 从 '0.0.0.0' 更改为 '127.0.0.1' 具有相同的效果。


-1
投票

我的 Python 套接字 ioclient 可以非常快速地连接到外部 Node.js 服务器。 这可能是路由/DNS 问题 本地主机有时会表现出奇怪的路由行为。 使用 127.0.0.1 而不是 localhost 作为 url 来消除路由/DNS 超时

© www.soinside.com 2019 - 2024. All rights reserved.