Go to the latest version of this document.

# ``twisted`.`internet`.`kqreactor`.`KQueueReactor``

class documentation

`class KQueueReactor(posixbase.PosixReactorBase): (source)`

Constructor: `KQueueReactor(_kqueueImpl)`

Implements interfaces: `twisted.internet.interfaces.IReactorDaemonize`, `twisted.internet.interfaces.IReactorFDSet`

View In Hierarchy

A reactor that uses kqueue(2)/kevent(2) and relies on Python 2.6 or higher which has built in support for kqueue in the select module.

Method | `__init__` | Initialize kqueue object, file descriptor tracking dictionaries, and the base class.
Method | `addReader` | Implement `IReactorFDSet.addReader`.
Method | `addWriter` | Implement `IReactorFDSet.addWriter`.
Method | `afterDaemonize` | Implement `IReactorDaemonize.afterDaemonize`.
Method | `beforeDaemonize` | Implement `IReactorDaemonize.beforeDaemonize`.
Method | `doKEvent` | Poll the kqueue for new events.
Method | `getReaders` | Implement `IReactorFDSet.getReaders`.
Method | `getWriters` | Implement `IReactorFDSet.getWriters`.
Method | `removeAll` | Implement `IReactorFDSet.removeAll`.
Method | `removeReader` | Implement `IReactorFDSet.removeReader`.
Method | `removeWriter` | Implement `IReactorFDSet.removeWriter`.
Method | `_doWriteOrRead` | Private method called when a FD is ready for reading, writing or was lost. Do the work and raise errors where necessary.
Method | `_updateRegistration` | Private method for changing kqueue registration on a given FD filtering for events given filter/op. This will never block and returns nothing.
Instance Variable | `_impl` | The implementation of `_IKQueue` to use.
Instance Variable | `_kq` | A `kqueue` which will be used to check for I/O readiness.
Instance Variable | `_reads` | A set containing integer file descriptors. Values in this set will be registered with `_kq` for read readiness notifications which will be dispatched to the corresponding `FileDescriptor` instances in `_selectables`...
Instance Variable | `_selectables` | A dictionary mapping integer file descriptors to instances of `FileDescriptor` which have been registered with the reactor. All `FileDescriptor`s which are currently receiving read or write readiness notifications will be present as values in this dictionary.
Instance Variable | `_writes` | A set containing integer file descriptors. Values in this set will be registered with `_kq` for write readiness notifications which will be dispatched to the corresponding `FileDescriptor` instances in `_selectables`...

Inherited from `PosixReactorBase`:

Method | `adoptDatagramPort` | Add an existing listening SOCK_DGRAM socket to the reactor to monitor for read and write readiness.
Method | `adoptStreamConnection` | No summary
Method | `adoptStreamPort` | Create a new `IListeningPort` from an already-initialized socket.
Method | `connectSSL` | Connect a client Protocol to a remote SSL socket.
Method | `connectTCP` | Connect a TCP client.
Method | `connectUNIX` | Connect a client protocol to a UNIX socket.
Method | `connectUNIXDatagram` | Connects a `ConnectedDatagramProtocol` instance to a path.
Method | `installWaker` | Install a `waker' to allow threads and signals to wake up the IO thread.
Method | `listenMulticast` | Connects a given DatagramProtocol to the given numeric UDP port.
Method | `listenSSL` | Connects a given protocol factory to the given numeric TCP/IP port. The connection is a SSL one, using contexts created by the context factory.
Method | `listenTCP` | Connects a given protocol factory to the given numeric TCP/IP port.
Method | `listenUDP` | Connects a given `DatagramProtocol` to the given numeric UDP port.
Method | `listenUNIX` | Listen on a UNIX socket.
Method | `listenUNIXDatagram` | Connects a given `DatagramProtocol` to the given path.
Method | `spawnProcess` | Spawn a process, with a process protocol.
Instance Variable | `waker` | Undocumented
Method | `_removeAll` | Remove all readers and writers, and list of removed `IReadDescriptor`s and `IWriteDescriptor`s.
Method | `_signalsFactory` | Customize reactor signal handling to support child processes on POSIX platforms.
Method | `_wakerFactory` | Undocumented
Class Variable | `_supportedAddressFamilies` | Undocumented
Instance Variable | `_childWaker` | `None` or a reference to the `_SIGCHLDWaker` which is used to properly notice child process termination.

Inherited from `_DisconnectSelectableMixin` (via `PosixReactorBase`):

Method | `_disconnectSelectable` | Utility function for disconnecting a selectable.

Inherited from `ReactorBase` (via `PosixReactorBase`, `_DisconnectSelectableMixin`):

Method | `addSystemEventTrigger` | See twisted.internet.interfaces.IReactorCore.addSystemEventTrigger.
Method | `callFromThread` | See `twisted.internet.interfaces.IReactorFromThreads.callFromThread`.
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 | `getThreadPool` | See `twisted.internet.interfaces.IReactorThreads.getThreadPool`.
Method | `iterate` | See twisted.internet.interfaces.IReactorCore.iterate.
Method | `mainLoop` | Undocumented
Method | `removeSystemEventTrigger` | See twisted.internet.interfaces.IReactorCore.removeSystemEventTrigger.
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
Method | `_addInternalReader` | Add a read descriptor which is part of the implementation of the reactor itself.
Method | `_cancelCallLater` | Undocumented
Method | `_initThreadPool` | Create the threadpool accessible with callFromThread.
Method | `_initThreads` | Undocumented
Method | `_insertNewDelayedCalls` | Undocumented
Method | `_makeSignalHandling` | Get an appropriate signal handling object.
Method | `_moveCallLaterSooner` | Undocumented
Method | `_reallyStartRunning` | Method called to transition to the running state. This should happen in the during startup event trigger phase.
Method | `_removeInternalReader` | Remove a read descriptor which is part of the implementation of the reactor itself.
Method | `_stopThreadPool` | 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 ...
Method | `_uninstallHandler` | Undocumented
Class Variable | `_lock` | Undocumented
Instance Variable | `_cancellations` | Undocumented
Instance Variable | `_eventTriggers` | Undocumented
Instance Variable | `_exitSignal` | See `_ISupportsExitSignalCapturing._exitSignal`
Instance Variable | `_installSignalHandlers` | A flag which indicates whether any signal handlers will be installed during startup. This includes handlers for SIGCHLD to monitor child processes, and SIGINT, SIGTERM, and SIGBREAK
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...
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 | `_signals` | An object which knows how to install and uninstall the reactor's signal-handling behavior.
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` (via `PosixReactorBase`, `_DisconnectSelectableMixin`, `ReactorBase`):

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, _kqueueImpl=select): (source)
overrides `twisted.internet.base.ReactorBase.__init__`

Initialize kqueue object, file descriptor tracking dictionaries, and the base class.

See:

- http://docs.python.org/library/select.html
- www.freebsd.org/cgi/man.cgi?query=kqueue
- people.freebsd.org/~jlemon/papers/kqueue.pdf

Parameters
_kqueueImpl | The implementation of `_IKQueue` to use. A hook for testing.

def addReader(self, reader): (source)
from `twisted.internet.interfaces.IReactorFDSet`
overrides `twisted.internet.base.ReactorBase.addReader`

Implement `IReactorFDSet.addReader`.

def addWriter(self, writer): (source)
from `twisted.internet.interfaces.IReactorFDSet`
overrides `twisted.internet.base.ReactorBase.addWriter`

Implement `IReactorFDSet.addWriter`.

def afterDaemonize(self): (source)
from `twisted.internet.interfaces.IReactorDaemonize`

Implement `IReactorDaemonize.afterDaemonize`.

def beforeDaemonize(self): (source)
from `twisted.internet.interfaces.IReactorDaemonize`

Implement `IReactorDaemonize.beforeDaemonize`.

def doKEvent(self, timeout): (source)

Poll the kqueue for new events.

def getReaders(self): (source)
from `twisted.internet.interfaces.IReactorFDSet`
overrides `twisted.internet.base.ReactorBase.getReaders`

Implement `IReactorFDSet.getReaders`.

def getWriters(self): (source)
from `twisted.internet.interfaces.IReactorFDSet`
overrides `twisted.internet.base.ReactorBase.getWriters`

Implement `IReactorFDSet.getWriters`.

def removeAll(self): (source)
from `twisted.internet.interfaces.IReactorFDSet`
overrides `twisted.internet.base.ReactorBase.removeAll`

Implement `IReactorFDSet.removeAll`.

def removeReader(self, reader): (source)
from `twisted.internet.interfaces.IReactorFDSet`
overrides `twisted.internet.base.ReactorBase.removeReader`

Implement `IReactorFDSet.removeReader`.

def removeWriter(self, writer): (source)
from `twisted.internet.interfaces.IReactorFDSet`
overrides `twisted.internet.base.ReactorBase.removeWriter`

Implement `IReactorFDSet.removeWriter`.

def _doWriteOrRead(self, selectable, fd, event): (source)

Private method called when a FD is ready for reading, writing or was lost. Do the work and raise errors where necessary.

def _updateRegistration(self, fd, filter, op): (source)

Private method for changing kqueue registration on a given FD filtering for events given filter/op. This will never block and returns nothing.

_impl = (source)

The implementation of `_IKQueue` to use.

_kq = (source)

A `kqueue` which will be used to check for I/O readiness.

_reads: `set` = (source)

A set containing integer file descriptors. Values in this set will be registered with `_kq` for read readiness notifications which will be dispatched to the corresponding `FileDescriptor` instances in `_selectables`.

_selectables: `dict` = (source)

A dictionary mapping integer file descriptors to instances of `FileDescriptor` which have been registered with the reactor. All `FileDescriptor`s which are currently receiving read or write readiness notifications will be present as values in this dictionary.

_writes: `set` = (source)

A set containing integer file descriptors. Values in this set will be registered with `_kq` for write readiness notifications which will be dispatched to the corresponding `FileDescriptor` instances in `_selectables`.