o
    NK&h                     @   sF   d dl mZ d dlmZ d dlmZ d dlmZmZ G dd dZ	dS )    )Optional)error_logger)RestartOrder)ProcessStateWorkerProcessc                	   @   s   e Zd Zdejfdee dee deee  ddfddZ	dee dee d	ede
e fd
dZdee dee d	ede
e fddZdd ZdS )	RestarterNtransient_processesdurable_processesprocess_namesreturnc                 K   sb   | j ||pg |fi |}|| j||pg |fi |O }|r-|s/tdd|  dS dS dS )a  Restart the worker processes.

        Args:
            process_names (Optional[List[str]], optional): The names of the processes to restart.
                If `None`, then all processes will be restarted. Defaults to `None`.
            restart_order (RestartOrder, optional): The order in which to restart the processes.
                Defaults to `RestartOrder.SHUTDOWN_FIRST`.
        zFailed to restart processes: z, N)_restart_transient_restart_durabler   errorjoin)selfr   r	   r
   restart_orderkwargs	restarted r   I/var/www/html/venv/lib/python3.10/site-packages/sanic/worker/restarter.pyrestart	   s&   zRestarter.restart	processesr   c                 K   sJ   t  }|D ]}|jr|r|j|vrq| j||fi | ||j q|S )N)setrestartablename_restart_processaddr   r   r
   r   r   r   processr   r   r   r   +   s   
zRestarter._restart_transientc                 K   s   t  }|s|S |D ]6}|jr|j|vrq	|jtjtjtjfvr/t	d|j d|jj d q	| j
||fi | ||j q	|S )NzCannot restart process z7 because it is not in a final state. Current state is: .)r   r   r   stater   	COMPLETEDFAILEDNONEr   r   r   r   r   r   r   r   r   <   s(   
zRestarter._restart_durablec                 K   s   |j dd|i| d S )Nr   r   )r   )r   r   r   r   r   r   r   r   Y   s   zRestarter._restart_process)__name__
__module____qualname__r   SHUTDOWN_FIRSTlistr   r   strr   r   r   r   r   r   r   r   r   r      s>    

"

r   N)
typingr   	sanic.logr   sanic.worker.constantsr   sanic.worker.processr   r   r   r   r   r   r   <module>   s
    