# ``twisted`.`internet`.`base`.`ReactorBase``

class documentation

`class ReactorBase(PluggableResolverMixin): (source)`

Known subclasses: `twisted.internet.iocpreactor.reactor.IOCPReactor`, `twisted.internet.posixbase.PosixReactorBase`

Implements interfaces: `twisted.internet.interfaces._ISupportsExitSignalCapturing`, `twisted.internet.interfaces.IReactorCore`, `twisted.internet.interfaces.IReactorThreads`, `twisted.internet.interfaces.IReactorTime`

View In Hierarchy

Default base class for Reactors.

Method | `__init__` | Undocumented
Method | `addReader` | Undocumented
Method | `addSystemEventTrigger` | See twisted.internet.interfaces.IReactorCore.addSystemEventTrigger.
Method | `addWriter` | Undocumented
Method | `callFromThread` | Cause a function to be executed by the reactor thread.
Method | `callInThread` | See `twisted.internet.interfaces.IReactorInThreads.callInThread`.
Method | `callLater` | See twisted.internet.interfaces.IReactorTime.callLater.
Method | `callWhenRunning` | See twisted.internet.interfaces.IReactorCore.callWhenRunning.
Method | `crash` | See twisted.internet.interfaces.IReactorCore.crash.
Method | `disconnectAll` | Disconnect every reader, and writer in the system.
Method | `doIteration` | Do one iteration over the readers and writers which have been added.
Method | `fireSystemEvent` | See twisted.internet.interfaces.IReactorCore.fireSystemEvent.
Method | `getDelayedCalls` | See `twisted.internet.interfaces.IReactorTime.getDelayedCalls`
Method | `getReaders` | Undocumented
Method | `getThreadPool` | See `twisted.internet.interfaces.IReactorThreads.getThreadPool`.
Method | `getWriters` | Undocumented
Method | `installWaker` | Undocumented
Method | `iterate` | See twisted.internet.interfaces.IReactorCore.iterate.
Method | `removeAll` | Undocumented
Method | `removeReader` | Undocumented
Method | `removeSystemEventTrigger` | See twisted.internet.interfaces.IReactorCore.removeSystemEventTrigger.
Method | `removeWriter` | Undocumented
Method | `resolve` | Return a Deferred that will resolve a hostname.
Method | `run` | Fire 'startup' System Events, move the reactor to the 'running' state, then run the main loop until it is stopped with `stop()` or `crash()`.
Method | `runUntilCurrent` | Run all pending timed calls.
Method | `sigBreak` | Handle a SIGBREAK interrupt.
Method | `sigInt` | Handle a SIGINT interrupt.
Method | `sigTerm` | Handle a SIGTERM interrupt.
Method | `startRunning` | Method called when reactor starts: do some initialization and fire startup events.
Method | `stop` | See twisted.internet.interfaces.IReactorCore.stop.
Method | `suggestThreadPoolSize` | See `twisted.internet.interfaces.IReactorThreads.suggestThreadPoolSize`.
Method | `timeout` | Determine the longest time the reactor may sleep (waiting on I/O notification, perhaps) before it must wake up to service a time-related event.
Method | `wakeUp` | Wake up the event loop.
Class Variable | `__name__` | Undocumented
Class Variable | `installed` | Undocumented
Class Variable | `seconds` | Get the current time in seconds.
Instance Variable | `running` | See `IReactorCore.running`
Instance Variable | `threadCallQueue` | Undocumented
Instance Variable | `threadpool` | Undocumented
Instance Variable | `threadpoolShutdownID` | Undocumented
Instance Variable | `usingThreads` | Undocumented
Instance Variable | `waker` | Undocumented
Method | `_cancelCallLater` | Undocumented
Method | `_initThreadPool` | Create the threadpool accessible with callFromThread.
Method | `_initThreads` | Undocumented
Method | `_insertNewDelayedCalls` | Undocumented
Method | `_moveCallLaterSooner` | Undocumented
Method | `_reallyStartRunning` | Method called to transition to the running state. This should happen in the during startup event trigger phase.
Method | `_stopThreadPool` | No summary
Method | `_uninstallHandler` | Undocumented
Class Variable | `_lock` | Undocumented
Instance Variable | `_cancellations` | Undocumented
Instance Variable | `_eventTriggers` | Undocumented
Instance Variable | `_exitSignal` | See `_ISupportsExitSignalCapturing._exitSignal`
Instance Variable | `_internalReaders` | Undocumented
Instance Variable | `_justStopped` | A flag which is true between the time `reactor.stop` is called and the time the shutdown system event is fired. This is used to determine whether that event should be fired after each iteration through the mainloop. This should be replaced with an explicit state machine.
Instance Variable | `_newTimedCalls` | Undocumented
Instance Variable | `_pendingTimedCalls` | Undocumented
Instance Variable | `_registerAsIOThread` | A flag controlling whether the reactor will register the thread it is running in as the I/O thread when it starts. If `True`, registration will be done, otherwise it will not be.
Instance Variable | `_started` | A flag which is true from the time `reactor.run` is called until the time `reactor.run` returns. This is used to prevent calls to `reactor.run` on a running reactor. This should be replaced with an explicit state machine.
Instance Variable | `_startedBefore` | Undocumented
Instance Variable | `_stopped` | A flag which is true between paired calls to `reactor.run` and `reactor.stop`. This should be replaced with an explicit state machine.
Instance Variable | `_threadpoolStartupID` | Undocumented

Inherited from `PluggableResolverMixin`:

Method | `installNameResolver` | See `IReactorPluggableNameResolver`.
Method | `installResolver` | See `IReactorPluggableResolver`.
Instance Variable | `resolver` | The installed `IResolverSimple`.
Property | `nameResolver` | Implementation of read-only `IReactorPluggableNameResolver.nameResolver`.
Instance Variable | `_nameResolver` | The installed `IHostnameResolver`.

def __init__(self): (source)
overridden in `twisted.internet._glibbase.GlibReactorBase`, `twisted.internet._threadedselect.ThreadedSelectReactor`, `twisted.internet.asyncioreactor.AsyncioSelectorReactor`, `twisted.internet.cfreactor.CFReactor`, `twisted.internet.epollreactor.EPollReactor`, `twisted.internet.iocpreactor.reactor.IOCPReactor`, `twisted.internet.kqreactor.KQueueReactor`, `twisted.internet.pollreactor.PollReactor`, `twisted.internet.selectreactor.SelectReactor`, `twisted.internet.win32eventreactor.Win32Reactor`

Undocumented

def addReader(self, reader): (source)
overridden in `twisted.internet._glibbase.GlibReactorBase`, `twisted.internet._threadedselect.ThreadedSelectReactor`, `twisted.internet.asyncioreactor.AsyncioSelectorReactor`, `twisted.internet.cfreactor.CFReactor`, `twisted.internet.epollreactor.EPollReactor`, `twisted.internet.kqreactor.KQueueReactor`, `twisted.internet.pollreactor.PollReactor`, `twisted.internet.selectreactor.SelectReactor`, `twisted.internet.win32eventreactor.Win32Reactor`

Undocumented

Parameters
reader:`IReadDescriptor` | Undocumented

def addSystemEventTrigger(self, phase, eventType, callable, *args, **kwargs): (source)
from `twisted.internet.interfaces.IReactorCore`
See twisted.internet.interfaces.IReactorCore.addSystemEventTrigger.

Parameters
phase:`str` | Undocumented
eventType:`str` | Undocumented
callable:`Callable[..., Any]` | Undocumented
*args:`object` | Undocumented
**kwargs:`object` | Undocumented
Returns
`_SystemEventID` | Undocumented

def addWriter(self, writer): (source)
overridden in `twisted.internet._glibbase.GlibReactorBase`, `twisted.internet._threadedselect.ThreadedSelectReactor`, `twisted.internet.asyncioreactor.AsyncioSelectorReactor`, `twisted.internet.cfreactor.CFReactor`, `twisted.internet.epollreactor.EPollReactor`, `twisted.internet.kqreactor.KQueueReactor`, `twisted.internet.pollreactor.PollReactor`, `twisted.internet.selectreactor.SelectReactor`, `twisted.internet.win32eventreactor.Win32Reactor`

Undocumented

Parameters
writer:`IWriteDescriptor` | Undocumented

def callFromThread(self, f, *args, **kwargs): (source)
from `twisted.internet.interfaces.IReactorFromThreads`
overridden in `twisted.internet.asyncioreactor.AsyncioSelectorReactor`

Cause a function to be executed by the reactor thread.

Use this method when you want to run a function in the reactor's thread from another thread. Calling `callFromThread` should wake up the main thread (where `reactor.run()` is executing) and run the given callable in that thread.

If you're writing a multi-threaded application the `callable` may need to be thread safe, but this method doesn't require it as such. If you want to call a function in the next mainloop iteration, but you're in the same thread, use `callLater` with a delay of 0.

Parameters
f:`Callable[..., Any]` | Undocumented
*args:`object` | Undocumented
**kwargs:`object` | Undocumented

def callInThread(self, _callable, *args, **kwargs): (source)
from `twisted.internet.interfaces.IReactorInThreads`
See `twisted.internet.interfaces.IReactorInThreads.callInThread`.

Parameters
_callable:`Callable[..., Any]` | Undocumented
*args:`object` | Undocumented
**kwargs:`object` | Undocumented

def callLater(self, delay, callable, *args, **kw): (source)
from `twisted.internet.interfaces.IReactorTime`
overridden in `twisted.internet._glibbase.GlibReactorBase`, `twisted.internet._threadedselect.ThreadedSelectReactor`, `twisted.internet.asyncioreactor.AsyncioSelectorReactor`, `twisted.internet.cfreactor.CFReactor`
See twisted.internet.interfaces.IReactorTime.callLater.

Parameters
delay:`float` | Undocumented
callable:`Callable[..., Any]` | Undocumented
*args:`object` | Undocumented
**kw:`object` | Undocumented
Returns
`DelayedCall` | Undocumented

def callWhenRunning(self, callable, *args, **kwargs): (source)
from `twisted.internet.interfaces.IReactorCore`
See twisted.internet.interfaces.IReactorCore.callWhenRunning.

Parameters
callable:`Callable[..., Any]` | Undocumented
*args:`object` | Undocumented
**kwargs:`object` | Undocumented
Returns
`Optional[_SystemEventID]` | Undocumented

def crash(self): (source)
from `twisted.internet.interfaces.IReactorCore`
overridden in `twisted.internet._glibbase.GlibReactorBase`, `twisted.internet._glibbase.PortableGlibReactorBase`, `twisted.internet.asyncioreactor.AsyncioSelectorReactor`, `twisted.internet.cfreactor.CFReactor`

See twisted.internet.interfaces.IReactorCore.crash.

Reset reactor state tracking attributes and re-initialize certain state-transition helpers which were set up in `__init__` but later destroyed (through use).

def disconnectAll(self): (source)
Disconnect every reader, and writer in the system.
def doIteration(self, delay): (source)
overridden in `twisted.internet.iocpreactor.reactor.IOCPReactor`
Do one iteration over the readers and writers which have been added.

Parameters
delay:`Optional[float]` | Undocumented

def fireSystemEvent(self, eventType): (source)
from `twisted.internet.interfaces.IReactorCore`
See twisted.internet.interfaces.IReactorCore.fireSystemEvent.

Parameters
eventType:`str` | Undocumented

def getDelayedCalls(self): (source)
from `twisted.internet.interfaces.IReactorTime`
See `twisted.internet.interfaces.IReactorTime.getDelayedCalls`

Returns
`Sequence[IDelayedCall]` | Undocumented

def getReaders(self): (source)
overridden in `twisted.internet._glibbase.GlibReactorBase`, `twisted.internet._threadedselect.ThreadedSelectReactor`, `twisted.internet.asyncioreactor.AsyncioSelectorReactor`, `twisted.internet.cfreactor.CFReactor`, `twisted.internet.epollreactor.EPollReactor`, `twisted.internet.kqreactor.KQueueReactor`, `twisted.internet.pollreactor.PollReactor`, `twisted.internet.selectreactor.SelectReactor`, `twisted.internet.win32eventreactor.Win32Reactor`

Undocumented

Returns
`List[IReadDescriptor]` | Undocumented

def getThreadPool(self): (source)
from `twisted.internet.interfaces.IReactorThreads`
See `twisted.internet.interfaces.IReactorThreads.getThreadPool`.

Returns
`ThreadPool` | Undocumented

def getWriters(self): (source)
overridden in `twisted.internet._glibbase.GlibReactorBase`, `twisted.internet._threadedselect.ThreadedSelectReactor`, `twisted.internet.asyncioreactor.AsyncioSelectorReactor`, `twisted.internet.cfreactor.CFReactor`, `twisted.internet.epollreactor.EPollReactor`, `twisted.internet.kqreactor.KQueueReactor`, `twisted.internet.pollreactor.PollReactor`, `twisted.internet.selectreactor.SelectReactor`, `twisted.internet.win32eventreactor.Win32Reactor`

Undocumented

Returns
`List[IWriteDescriptor]` | Undocumented

def installWaker(self): (source)
overridden in `twisted.internet.iocpreactor.reactor.IOCPReactor`, `twisted.internet.posixbase.PosixReactorBase`

Undocumented

def iterate(self, delay=0.0): (source)
from `twisted.internet.interfaces.IReactorCore`
overridden in `twisted.internet._glibbase.GlibReactorBase`, `twisted.internet.asyncioreactor.AsyncioSelectorReactor`, `twisted.internet.cfreactor.CFReactor`
See twisted.internet.interfaces.IReactorCore.iterate.

Parameters
delay:`float` | Undocumented

def removeAll(self): (source)
overridden in `twisted.internet._glibbase.GlibReactorBase`, `twisted.internet._threadedselect.ThreadedSelectReactor`, `twisted.internet.asyncioreactor.AsyncioSelectorReactor`, `twisted.internet.cfreactor.CFReactor`, `twisted.internet.epollreactor.EPollReactor`, `twisted.internet.iocpreactor.reactor.IOCPReactor`, `twisted.internet.kqreactor.KQueueReactor`, `twisted.internet.pollreactor.PollReactor`, `twisted.internet.selectreactor.SelectReactor`, `twisted.internet.win32eventreactor.Win32Reactor`

Undocumented

Returns
`List[Union[IReadDescriptor, IWriteDescriptor]]` | Undocumented

def removeReader(self, reader): (source)
overridden in `twisted.internet._glibbase.GlibReactorBase`, `twisted.internet._threadedselect.ThreadedSelectReactor`, `twisted.internet.asyncioreactor.AsyncioSelectorReactor`, `twisted.internet.cfreactor.CFReactor`, `twisted.internet.epollreactor.EPollReactor`, `twisted.internet.kqreactor.KQueueReactor`, `twisted.internet.pollreactor.PollReactor`, `twisted.internet.selectreactor.SelectReactor`, `twisted.internet.win32eventreactor.Win32Reactor`

Undocumented

Parameters
reader:`IReadDescriptor` | Undocumented

def removeSystemEventTrigger(self, triggerID): (source)
from `twisted.internet.interfaces.IReactorCore`
See twisted.internet.interfaces.IReactorCore.removeSystemEventTrigger.

Parameters
triggerID:`_SystemEventID` | Undocumented

def removeWriter(self, writer): (source)
overridden in `twisted.internet._glibbase.GlibReactorBase`, `twisted.internet._threadedselect.ThreadedSelectReactor`, `twisted.internet.asyncioreactor.AsyncioSelectorReactor`, `twisted.internet.cfreactor.CFReactor`, `twisted.internet.epollreactor.EPollReactor`, `twisted.internet.kqreactor.KQueueReactor`, `twisted.internet.pollreactor.PollReactor`, `twisted.internet.selectreactor.SelectReactor`, `twisted.internet.win32eventreactor.Win32Reactor`

Undocumented

Parameters
writer:`IWriteDescriptor` | Undocumented

def resolve(self, name, timeout=(1, 3, 11, 45)): (source)
from `twisted.internet.interfaces.IReactorCore`
Return a Deferred that will resolve a hostname.

Parameters
name:`str` | Undocumented
timeout:`Sequence[int]` | Undocumented
Returns
`Deferred[str]` | Undocumented

def run(self): (source)
from `twisted.internet.interfaces.IReactorCore`
overridden in `twisted.internet._glibbase.GlibReactorBase`, `twisted.internet._glibbase.PortableGlibReactorBase`, `twisted.internet._threadedselect.ThreadedSelectReactor`, `twisted.internet.asyncioreactor.AsyncioSelectorReactor`
Fire 'startup' System Events, move the reactor to the 'running' state, then run the main loop until it is stopped with `stop()` or `crash()`.
def runUntilCurrent(self): (source)
Run all pending timed calls.
def sigBreak(self, number, frame=None): (source)
Handle a SIGBREAK interrupt.

Parameters
number:`int` | See handler specification in `signal.signal`
frame:`Optional[FrameType]` | See handler specification in `signal.signal`

def sigInt(self, number, frame=None): (source)
Handle a SIGINT interrupt.

Parameters
number:`int` | See handler specification in `signal.signal`
frame:`Optional[FrameType]` | See handler specification in `signal.signal`

def sigTerm(self, number, frame=None): (source)
Handle a SIGTERM interrupt.

Parameters
number:`int` | See handler specification in `signal.signal`
frame:`Optional[FrameType]` | See handler specification in `signal.signal`

def startRunning(self): (source)

Method called when reactor starts: do some initialization and fire startup events.

Don't call this directly, call reactor.run() instead: it should take care of calling this.

This method is somewhat misnamed. The reactor will not necessarily be in the running state by the time this method returns. The only guarantee is that it will be on its way to the running state.

def stop(self): (source)
from `twisted.internet.interfaces.IReactorCore`
overridden in `twisted.internet._glibbase.GlibReactorBase`, `twisted.internet._threadedselect.ThreadedSelectReactor`, `twisted.internet.asyncioreactor.AsyncioSelectorReactor`, `twisted.internet.cfreactor.CFReactor`
See twisted.internet.interfaces.IReactorCore.stop.
def suggestThreadPoolSize(self, size): (source)
from `twisted.internet.interfaces.IReactorThreads`
See `twisted.internet.interfaces.IReactorThreads.suggestThreadPoolSize`.

Parameters
size:`int` | Undocumented

def timeout(self): (source)
Determine the longest time the reactor may sleep (waiting on I/O notification, perhaps) before it must wake up to service a time-related event.

Returns
`Optional[float]` | The maximum number of seconds the reactor may sleep.

def wakeUp(self): (source)
overridden in `twisted.internet._threadedselect.ThreadedSelectReactor`, `twisted.internet.iocpreactor.reactor.IOCPReactor`
Wake up the event loop.
__name__: `str` = (source)

Undocumented

installed: `bool` = (source)

Undocumented

seconds = (source)
from `twisted.internet.interfaces.IReactorTime`
Get the current time in seconds.

Returns
A number-like object of some sort.

running: `bool` = (source)
from `twisted.internet.interfaces.IReactorCore`
See `IReactorCore.running`
threadCallQueue: `List[_ThreadCall]` = (source)

Undocumented

threadpool = (source)

Undocumented

threadpoolShutdownID = (source)

Undocumented

usingThreads: `bool` = (source)

Undocumented

waker: `Any` = (source)
overridden in `twisted.internet.posixbase.PosixReactorBase`

Undocumented

def _cancelCallLater(self, delayedCall): (source)

Undocumented

Parameters
delayedCall:`DelayedCall` | Undocumented

def _initThreadPool(self): (source)
Create the threadpool accessible with callFromThread.
def _initThreads(self): (source)

Undocumented

def _insertNewDelayedCalls(self): (source)

Undocumented

def _moveCallLaterSooner(self, delayedCall): (source)
overridden in `twisted.internet.asyncioreactor.AsyncioSelectorReactor`, `twisted.internet.cfreactor.CFReactor`

Undocumented

Parameters
delayedCall:`DelayedCall` | Undocumented

def _reallyStartRunning(self): (source)
Method called to transition to the running state. This should happen in the during startup event trigger phase.
def _stopThreadPool(self): (source)
Stop the reactor threadpool. This method is only valid if there is currently a threadpool (created by `_initThreadPool`). It is not intended to be called directly; instead, it will be called by a shutdown trigger created in `_initThreadPool`.
def _uninstallHandler(self): (source)
overridden in `twisted.internet.posixbase.PosixReactorBase`

Undocumented

_lock = (source)

Undocumented

_cancellations: `int` = (source)

Undocumented

_eventTriggers: `Dict[str, _ThreePhaseEvent]` = (source)

Undocumented

_exitSignal = (source)
from `twisted.internet.interfaces._ISupportsExitSignalCapturing`
See `_ISupportsExitSignalCapturing._exitSignal`
_internalReaders: `Set[Any]` = (source)

Undocumented

_justStopped: `bool` = (source)
overridden in `twisted.internet.asyncioreactor.AsyncioSelectorReactor`
A flag which is true between the time `reactor.stop` is called and the time the shutdown system event is fired. This is used to determine whether that event should be fired after each iteration through the mainloop. This should be replaced with an explicit state machine.
_newTimedCalls: `list` = (source)

Undocumented

_pendingTimedCalls = (source)

Undocumented

_registerAsIOThread: `bool` = (source)
A flag controlling whether the reactor will register the thread it is running in as the I/O thread when it starts. If `True`, registration will be done, otherwise it will not be.
_started: `bool` = (source)
A flag which is true from the time `reactor.run` is called until the time `reactor.run` returns. This is used to prevent calls to `reactor.run` on a running reactor. This should be replaced with an explicit state machine.
_startedBefore: `bool` = (source)

Undocumented

_stopped: `bool` = (source)
A flag which is true between paired calls to `reactor.run` and `reactor.stop`. This should be replaced with an explicit state machine.
_threadpoolStartupID = (source)

Undocumented