File: //usr/local/lib/python3.9/site-packages/celery/worker/consumer/__pycache__/gossip.cpython-39.pyc
a
X>h� � @ s� d Z ddlmZ ddlmZ ddlmZ ddlmZ ddl m
Z
ddlmZ ddl
mZmZ dd lmZ dd
lmZ ddlmZ dd
lmZ dZee�Zejej ZZG dd� dej�ZdS )z)Worker <-> Worker communication Bootstep.� )�defaultdict)�partial)�heappush)�
itemgetter)�Consumer)� DummyLock)�ContentDisallowed�DecodeError)� bootsteps)�
get_logger)�Bunch� )�Mingle)�Gossipc s� e Zd ZdZd ZefZeddddddd�Zd d
hZ d-� fdd� Z
dd� Zd.dd�Zdd� Z
dd� Z� fdd�Zdd� Zdd� Zdd � Zd!d"� Zd#d$� Zd%d&� Zd'd(� Zd)d*� Zd+d,� Z� ZS )/r zfBootstep consuming events from other workers.
This keeps the logical clock value up to date.
�id�clock�hostname�pid�topic�action�cverZamqpZredisF� @� @c s | o| � |j�| _|j| _| |_|jjj| _|j| _d�| jt|j �g�| _
tt� t� t� d�| _
|j| _| jr�|jjj| j| jdd�| _|jr�t� |_| jj| _|| _|| _d | _tt�| _i | _| j| j d�| _!|jj"| _"d| j#i| _$t%� j&|fi |�� d S )N�.)� node_join�
node_leave� node_lostr
)�on_node_join�
on_node_leaveZmax_tasks_in_memory)zworker.electzworker.elect.ack�task)'�compatible_transport�app�enabledZgossip�events�Receiverr �join�strr �
full_hostnamer �set�on�timer�Stater r �stateZhubr Z_mutex�event�update_state�interval�heartbeat_interval�_trefr �list�consensus_requests�consensus_replies�on_elect�on_elect_ack�event_handlersr � call_task�election_handlers�super�__init__)�self�cZwithout_gossipr/ r0 �kwargs�� __class__� �G/usr/local/lib/python3.9/site-packages/celery/worker/consumer/gossip.pyr; $ sB ��
�
�zGossip.__init__c C s: |� � �}|jj| jv W d � S 1 s,0 Y d S �N)Zconnection_for_read� transportZdriver_type�compatible_transports)r<