← Back
Editing: _runner.cpython-38.pyc
U W[� � @ s� d Z ddlmZ ddlmZ ddlmZ ddlmZm Z m Z ddlmZm Z mZmZmZmZ ddlmZmZ dd lmZmZmZ e d d�G dd � d e��ZdS )z Twisted application runner. � )�stderr)�SIGTERM)�kill)�attrib�attrs�Factory)�globalLogBeginner�textFileLogObserver�FilteringLogObserver�LogLevelFilterPredicate�LogLevel�Logger� )�exit� ExitStatus)�nonePIDFile�AlreadyRunningError�InvalidPIDFileErrorT)�frozenc @ s� e Zd ZdZe� Ze� Zeed�Z edd�Z eejd�Z eed�Zeed�Zedd� d�Zeee�d�Zedd� d�Zeee�d�Zdd� Zd d � Zdd� Zd d� Zdd� Zdd� ZdS )�Runnera� Twisted application runner. @cvar _log: The logger attached to this class. @type _log: L{Logger} @ivar _reactor: The reactor to start and run the application in. @type _reactor: L{IReactorCore} @ivar _pidFile: The file to store the running process ID in. @type _pidFile: L{IPIDFile} @ivar _kill: Whether this runner should kill an existing running instance of the application. @type _kill: L{bool} @ivar _defaultLogLevel: The default log level to start the logging system with. @type _defaultLogLevel: L{constantly.NamedConstant} from L{LogLevel} @ivar _logFile: A file stream to write logging output to. @type _logFile: writable file-like object @ivar _fileLogObserverFactory: A factory for the file log observer to use when starting the logging system. @type _pidFile: callable that takes a single writable file-like object argument and returns a L{twisted.logger.FileLogObserver} @ivar _whenRunning: Hook to call after the reactor is running; this is where the application code that relies on the reactor gets called. @type _whenRunning: callable that takes the keyword arguments specified by C{whenRunningArguments} @ivar _whenRunningArguments: Keyword arguments to pass to C{whenRunning} when it is called. @type _whenRunningArguments: L{dict} @ivar _reactorExited: Hook to call after the reactor exits. @type _reactorExited: callable that takes the keyword arguments specified by C{reactorExitedArguments} @ivar _reactorExitedArguments: Keyword arguments to pass to C{reactorExited} when it is called. @type _reactorExitedArguments: L{dict} )�defaultFc K s d S �N� ��_r r �D/usr/lib/python3/dist-packages/twisted/application/runner/_runner.py�<lambda>S � zRunner.<lambda>c K s d S r r r r r r r U r c C sb | j }| �� z,|� | �� | �� | �� W 5 Q R X W n" tk r\ ttjd� Y dS X dS )z# Run this command. zAlready running.N) �_pidFile�killIfRequested�startLogging�startReactor� reactorExitedr r r � EX_CONFIG)�self�pidFiler r r �runY s z Runner.runc C s� | j }| jr�|tkr$ttjd� dS z|�� }W nB tk rR ttjd� Y dS t k rr ttj d� Y dS X | �� | jj d|d� t|t� ttj� dS dS )zj If C{self._kill} is true, attempt to kill a running instance of the application. zNo PID file specified.NzUnable to read PID file.zInvalid PID file.zTerminating process: {pid})�pid)r �_killr r r �EX_USAGE�read�EnvironmentError�EX_IOERRr � EX_DATAERRr �_log�infor r �EX_OK)r$ r% r'