问题描述
我在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 (将#修改为@)