From 015231f6e4934e641b9dec3ca792d6f733eca3cc Mon Sep 17 00:00:00 2001 From: mfranciszkiewicz Date: Fri, 31 Mar 2017 13:44:22 +0200 Subject: [PATCH] Use IOCP reactor on Windows --- golem/node.py | 7 +++++-- gui/startapp.py | 14 +++++++++----- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/golem/node.py b/golem/node.py index 911fc08e85..84df5bc94b 100644 --- a/golem/node.py +++ b/golem/node.py @@ -8,6 +8,7 @@ from apps.appsmanager import AppsManager from golem.client import Client +from golem.core.common import is_windows from golem.network.transport.tcpnetwork import SocketAddress, AddressValueError from golem.rpc.mapping.core import CORE_METHOD_MAP from golem.rpc.session import object_method_map, Session @@ -55,9 +56,11 @@ def add_tasks(self, tasks): def run(self, use_rpc=False): try: - # Import reactor locally because it also installs it and GUI - # requires Qt reactor version. + if is_windows() and 'twisted.internet.reactor' not in sys.modules: + from twisted.internet import iocpreactor + iocpreactor.install() from twisted.internet import reactor + if use_rpc: config = self.client.config_desc reactor.callWhenRunning(self._start_rpc_server, diff --git a/gui/startapp.py b/gui/startapp.py index 06f51e5704..036217107a 100644 --- a/gui/startapp.py +++ b/gui/startapp.py @@ -5,13 +5,10 @@ from apps.appsmanager import AppsManager from golem.client import Client -from golem.core.common import config_logging +from golem.core.common import config_logging, is_windows from golem.core.common import get_golem_path from golem.core.deferred import install_unhandled_error_logger -from golem.core.processmonitor import ProcessMonitor -from golem.docker.manager import DockerManager from golem.rpc.mapping.core import CORE_METHOD_MAP -from golem.rpc.router import CrossbarRouter from golem.rpc.session import Session, object_method_map from twisted.internet.error import ReactorAlreadyRunning @@ -59,9 +56,16 @@ def start_client(start_ranking, datadir=None, install_unhandled_error_logger() if not reactor: + if is_windows(): + from twisted.internet import iocpreactor + iocpreactor.install() from twisted.internet import reactor - process_monitor = None + from golem.core.processmonitor import ProcessMonitor + from golem.docker.manager import DockerManager + from golem.rpc.router import CrossbarRouter + + process_monitor = None if not client: client = Client(datadir=datadir, transaction_system=transaction_system, **config_overrides)