+
    ci	                        ^ RI Ht ^ RIt^ RIt^ RIHt ^ RIHt ]P                  ! ]	4      t
R R ltR R ltRR	 R
 lltR# )    )annotationsN)Any)get_settingsc               0    V ^8  d   QhRRRRRRRRRRR	R
/# )   campaign_idintbusiness_id
retry_onlyboolpriority_onlybusiness_namez
str | NonereturnNone )formats   "app\utils\rabbitmq_campaign.py__annotate__r      sD     %9 %9%9%9 %9 	%9
 %9 
%9    c           
     t   \        4       pVP                  '       g   \        P                  R4       R#  ^ RIpVP                  VP                  4      pVP                  V4      pVP                  4       p	V	P                  VP                  RRR7       RV RVRVR	VR
V/p
RV RV  2pV	P                  VP                  V\        P                  ! V
4      P                  R4      VP                  ^R7      R7       VP                  4        R#   \          d"   p\        P#                  RT4        Rp?R# Rp?ii ; i)u`   
Mirrors RabbitMQCampaignPublisher::publish — best-effort AMQP publish when RABBITMQ_URL set.
z%RabbitMQ not configured; skip publishNtopicT)exchangeexchange_typedurabler   r
   r   r   r   z	campaign..zutf-8)delivery_mode)r   routing_keybody
propertieszRabbitMQ publish failed: %s)r   rabbitmq_urlloggerdebugpikaURLParametersBlockingConnectionchannelexchange_declarerabbitmq_exchangebasic_publishjsondumpsencodeBasicPropertiesclose	Exceptionwarning)r   r
   r   r   r   settingsr#   paramsconnchr   r   es   &&&&&        r   publish_campaign_runr6      s$    ~H   <=9##H$9$9:&&v.\\^
X%?%?w`de;;*]] 
 "+a}=
//#D!((1++!+<	 	 	
 	

 94a889s   CD D7D22D7c               $    V ^8  d   QhRRRRRR/# )r   r
   r	   r   r   r   r   )r   s   "r   r   r   4   s!     > >3 >S >T >r   c                v   \        4       pVP                  '       g   R#  ^ RIpVP                  VP                  4      pVP	                  V4      pVP                  4       pV  RV R2pVP                  VR7       VP                  4        R#   \         d"   p\        P                  RT4        Rp?R# Rp?ii ; i)uL   
Mirrors RabbitMQCampaignQueueService::deleteQueueForCampaign — optional.
N_	_campaign)queuez RabbitMQ queue delete failed: %s)r   r    r#   r$   r%   r&   queue_deleter.   r/   r!   r0   )	r
   r   r1   r#   r2   r3   r4   
queue_namer5   s	   &&       r   delete_queue_for_campaignr>   4   s     ~H   
>##H$9$9:&&v.\\^#}Ak])<

j)

 >91==>s   A*B B8B33B8c               $    V ^8  d   QhRRRRRR/# )r   r
   r	   outboundr   r   r   r   )r   s   "r   r   r   H   s&     r r3 r$ r$ rr   c                2    \         P                  RW4       R# )u]   
Placeholder for CallHistorySyncHelper::triggerSyncForBusiness — log only unless extended.
zGCallHistorySyncHelper.triggerSyncForBusiness business_id=%s outbound=%sN)r!   info)r
   r@   s   &&r   trigger_call_history_syncrC   H   s     KKY[fqr   )T)
__future__r   r*   loggingtypingr   
app.configr   	getLogger__name__r!   r6   r>   rC   r   r   r   <module>rJ      s;    "    #			8	$%9P>(r rr   