如何解决在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 举报,一经查实,本站将立刻删除。