烧瓶socketio太慢

时间:2018-02-07 10:39:41

标签: python flask socket.io flask-socketio

我在服务器端有python flask,在客户端有js。我想在没有客户请求的情况下向客户端发送一些日志。我正在尝试使用flask socket.io插件实现它。

一切看起来都不错,谢谢以下博客。 https://blog.miguelgrinberg.com/post/easy-websockets-with-flask-and-gevent

但是我可以看到定期轮询进入服务器并且响应时间太长。每次民意调查都需要近5秒。这也延迟了我的其他AJAX调用。 可能是什么原因?

服务器端 -

@socketio.on('connect', namespace='/test')
def connect():
    global thread
    with thread_lock:
        if thread is None:
            thread = socketio.start_background_task(target=background_thread)
    socketio.emit('server_msg', 
   {'cause': 'connection', 'status': 'Success', 'count': len(CLIENT.keys())},
                  namespace='/test')


@socketio.on('client_msg', namespace='/test')
def client_msg(msg):
    print(msg)  # TODO: process this msg


def background_thread():
    count = 0
    while True:
        socketio.sleep(5)
        count += 1
        socketio.emit('my_response',
                      {'data': 'Server generated event', 'count': count},
                      namespace='/test')

Clinet方面 -

namespace = '/test';
var socket = io.connect(location.protocol + '//' + document.domain + ':' + location.port + namespace);

socket.on('connect', function () {
    socket.emit('client_msg', {cause: 'connection', details: location});
});
socket.on('server_msg', function (msg) {
    writeLog('log', 'Received ' + msg.cause + ' ' + msg.status)
});
 socket.emit('client_msg', {cause: 'connection', details: location});

网络流量 -

enter image description here

0 个答案:

没有答案