簡體   English   中英

重新啟動芹菜工作者與代理的消費者連接

[英]Restart celery worker consumer connection to broker

我在celery文檔中找到了一個如何重新啟動工作程序連接的示例( http://docs.openquake.org/celery-2.4.6/userguide/workers.html#writing-your-own-remote-control-commands ) :

from celery.worker.control import Panel

@Panel.register
def reset_connection(panel):
    panel.logger.critical("Connection reset by remote control.")
    panel.consumer.reset_connection()
    return {"ok": "connection reset"}

但是它僅在Celery 3.0和更早版本中可用。 Celery 3.1的Consumer類中沒有此類功能。

現在如何重新建立與代理的連接?

在3.1中將工作人員內部構件重寫為使用“ bootsteps”(請參閱http://docs.celeryproject.org/en/latest/userguide/extending.html

我認為從遠程控制命令重置代理連接的最佳方法是使用panel.consumer.connection.close()代替:

from celery.worker.control import Panel, logger as control_logger

@Panel.register
def reset_connection(state):
    control_logger.critical("Connection reset by remote control.")
    state.consumer.connection.close()
    return {"ok": "connection reset"}

這將迫使工作人員重新啟動所有與消費者相關的引導步驟(請參見上面鏈接中的圖)

順便說一句, panel參數被重命名為state但是您可以隨意命名。 該記錄器在該州不再可用,因此您必須導入它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM