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

class documentation

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

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` |
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 | `_handleSignals` | Extend the basic signal handling logic to also support handling SIGCHLD to know when to try to reap child processes.
Method | `_removeAll` | Remove all readers and writers, and list of removed `IReadDescriptor`s and `IWriteDescriptor`s.
Method | `_uninstallHandler` | If a child waker was created and installed, uninstall it now.
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 `_SignalReactorMixin` (via `PosixReactorBase`):

Method | `mainLoop` | Undocumented
Method | `run` | Undocumented
Method | `startRunning` | Extend the base implementation in order to remember whether signal handlers should be installed later.
Method | `_reallyStartRunning` | Extend the base implementation by also installing signal handlers, if `self._installSignalHandlers` is true.
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 to stop the reactor.

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

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

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

Method | `addSystemEventTrigger` | See twisted.internet.interfaces.IReactorCore.addSystemEventTrigger.
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 | `getThreadPool` | See `twisted.internet.interfaces.IReactorThreads.getThreadPool`.
Method | `iterate` | See twisted.internet.interfaces.IReactorCore.iterate.
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 | `_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
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` (via `PosixReactorBase`, `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`.