微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Flask服务器中优化gevent的greenlets

如何解决在Flask服务器中优化gevent的greenlets

我在refresh函数中可用于Wsgi服务器的操作如下:readable,writeable,_ = select.select(rsockets,[],1),我认为此代码行可能会导致危险情况。如何优化此代码

import gevent
from gevent.pywsgi import WsgiServer
from geventwebsocket.handler import WebSocketHandler

def main():
    http_server = WsgiServer((servers_manager.host,servers_manager.port),app,handler_class=WebSocketHandler)

    srv_greenlet = gevent.spawn(http_server.serve_forever)
    alarm_greenlet = gevent.spawn(refresh)
    
    gevent.joinall([srv_greenlet,alarm_greenlet])
def refresh(self):
    servers = ServiceSettings.objects.all()
    for server in servers:
        fserver = self.find_or_create_server(server)
        if fserver:
            fserver.auto_start()

    while not self._stop_listen:
        rsockets = []
        for server in self._servers_pool:
            if server.is_connected():
                rsockets.append(server.socket())

        readable,1)
        for read in readable:
            for server in self._servers_pool:
                if server.socket() == read:
                    server.recv_data()
                    break

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。