Implements interfaces: twisted.internet.interfaces.IConsumer, twisted.internet.interfaces.IProcessTransport, twisted.internet.interfaces.IProducer

A process that integrates with the Twisted event loop.

If your subprocess is a python program, you need to:

  • Run python.exe with the '-u' command line option - this turns on unbuffered I/O. Buffering stdout/err/in can cause problems, see e.g. http://support.microsoft.com/default.aspx?scid=kb;EN-US;q1903
  • If you don't want Windows messing with data passed over stdin/out/err, set the pipes to be in binary mode:
    import os, sys, mscvrt
    msvcrt.setmode(sys.stdin.fileno(), os.O_BINARY)
    msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)
    msvcrt.setmode(sys.stderr.fileno(), os.O_BINARY)
    
Method __init__ Create a new child process.
Method signalProcess Send a signal to the process.
Method write Write data to the process' stdin.
Method writeSequence Write data to the process' stdin.
Method writeToChild Similar to ITransport.write but also allows the file descriptor in the child process which will receive the bytes to be specified.
Method closeChildFD Close a file descriptor which is connected to the child process, identified by its FD in the child process.
Method closeStdin Close the process' stdin.
Method closeStderr Close stderr.
Method closeStdout Close stdout.
Method loseConnection Close the process' stdout, in and err.
Method outConnectionLost Undocumented
Method errConnectionLost Undocumented
Method inConnectionLost Undocumented
Method connectionLostNotify Will be called 3 times, by stdout/err threads and process handle.
Method maybeCallProcessEnded Call processEnded on protocol after final cleanup.
Method registerProducer Register to receive data from a producer.
Method unregisterProducer Stop consuming data from a producer, without disconnecting.
Method pauseProducing Undocumented
Method resumeProducing Undocumented
Method stopProducing Stop producing data.
Method __repr__ Return a string representation of the process.
Method _getReason Undocumented

Inherited from BaseProcess:

Method processEnded This is called when the child terminates.
Method _callProcessExited Undocumented

Inherited from BaseProcess:

Method processEnded This is called when the child terminates.
Method _callProcessExited Undocumented
def __init__(self, reactor, protocol, command, args, environment, path): (source)

Create a new child process.

def signalProcess(self, signalID): (source)

Send a signal to the process.

ParameterssignalIDcan be
  • one of "KILL", "TERM", or "INT". These will be implemented in a cross-platform manner, and so should be used if possible.
  • an integer, where it represents a POSIX signal ID.
Raisestwisted.internet.error.ProcessExitedAlreadyIf the process has already exited.
OSErrorIf the os.kill call fails with an errno different from ESRCH.
def _getReason(self, status): (source)
Undocumented
def write(self, data): (source)

Write data to the process' stdin.

def writeSequence(self, seq): (source)

Write data to the process' stdin.

def writeToChild(self, fd, data): (source)

Similar to ITransport.write but also allows the file descriptor in the child process which will receive the bytes to be specified.

This implementation is limited to writing to the child's standard input.

ParametersfdThe file descriptor to which to write. Only stdin (0) is supported. (type: int)
dataThe bytes to write. (type: bytes)
ReturnsNone
RaisesKeyErrorIf fd is anything other than the stdin file descriptor (0).
def closeChildFD(self, fd): (source)

Close a file descriptor which is connected to the child process, identified by its FD in the child process.

def closeStdin(self): (source)

Close the process' stdin.

def closeStderr(self): (source)
def closeStdout(self): (source)
def loseConnection(self): (source)

Close the process' stdout, in and err.

def outConnectionLost(self): (source)
Undocumented
def errConnectionLost(self): (source)
Undocumented
def inConnectionLost(self): (source)
Undocumented
def connectionLostNotify(self): (source)

Will be called 3 times, by stdout/err threads and process handle.

def maybeCallProcessEnded(self): (source)

Call processEnded on protocol after final cleanup.

def registerProducer(self, producer, streaming): (source)

Register to receive data from a producer.

This sets self to be a consumer for a producer. When this object runs out of data (as when a send(2) call on a socket succeeds in moving the last data from a userspace buffer into a kernelspace buffer), it will ask the producer to resumeProducing().

For IPullProducer providers, resumeProducing will be called once each time data is required.

For IPushProducer providers, pauseProducing will be called whenever the write buffer fills up and resumeProducing will only be called when it empties.

ParametersstreamingTrue if producer provides IPushProducer, False if producer provides IPullProducer. (type: bool)
ReturnsNone
RaisesRuntimeErrorIf a producer is already registered.
def unregisterProducer(self): (source)

Stop consuming data from a producer, without disconnecting.

def pauseProducing(self): (source)
Undocumented
def resumeProducing(self): (source)
Undocumented
def stopProducing(self): (source)

Stop producing data.

This tells a producer that its consumer has died, so it must stop producing data for good.

def __repr__(self): (source)

Return a string representation of the process.

API Documentation for Twisted, generated by pydoctor at 2017-06-11 10:59:01.