@classmethod
def configurable_default(cls):
- if hasattr(select, "epoll"):
- from tornado.platform.epoll import EPollIOLoop
- return EPollIOLoop
- if hasattr(select, "kqueue"):
- # Python 2.6+ on BSD or Mac
- from tornado.platform.kqueue import KQueueIOLoop
- return KQueueIOLoop
- from tornado.platform.select import SelectIOLoop
- return SelectIOLoop
+ return PollIOLoop
def initialize(self, make_current=None):
if make_current is None:
lambda fd, events: self._waker.consume(),
self.READ)
+ @classmethod
+ def configurable_base(cls):
+ return PollIOLoop
+
+ @classmethod
+ def configurable_default(cls):
+ if hasattr(select, "epoll"):
+ from tornado.platform.epoll import EPollIOLoop
+ return EPollIOLoop
+ if hasattr(select, "kqueue"):
+ # Python 2.6+ on BSD or Mac
+ from tornado.platform.kqueue import KQueueIOLoop
+ return KQueueIOLoop
+ from tornado.platform.select import SelectIOLoop
+ return SelectIOLoop
+
def close(self, all_fds=False):
self._closing = True
self.remove_handler(self._waker.fileno())
from tornado import gen
from tornado.httpclient import AsyncHTTPClient
from tornado.httpserver import HTTPServer
-from tornado.ioloop import IOLoop
+from tornado.ioloop import IOLoop, PollIOLoop
from tornado.platform.auto import set_close_exec
-from tornado.platform.select import SelectIOLoop
from tornado.testing import bind_unused_port
from tornado.test.util import unittest
from tornado.util import import_object, PY3
if have_twisted:
class LayeredTwistedIOLoop(TwistedIOLoop):
- """Layers a TwistedIOLoop on top of a TornadoReactor on a SelectIOLoop.
+ """Layers a TwistedIOLoop on top of a TornadoReactor on a PollIOLoop.
This is of course silly, but is useful for testing purposes to make
sure we're implementing both sides of the various interfaces
of the whole stack.
"""
def initialize(self, **kwargs):
- # When configured to use LayeredTwistedIOLoop we can't easily
- # get the next-best IOLoop implementation, so use the lowest common
- # denominator.
- self.real_io_loop = SelectIOLoop(make_current=False) # type: ignore
+ self.real_io_loop = PollIOLoop(make_current=False) # type: ignore
reactor = self.real_io_loop.run_sync(gen.coroutine(TornadoReactor))
super(LayeredTwistedIOLoop, self).initialize(reactor=reactor, **kwargs)
self.add_callback(self.make_current)