2016-06-10 9 views
0

Ich habe ein Beispiel dafür, wie gefunden Arbeiter Verbindung in Sellerie docs neu zu starten (http://docs.openquake.org/celery-2.4.6/userguide/workers.html#writing-your-own-remote-control-commands):Restart Sellerie Arbeiter Verbraucher Verbindung Broker

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"} 

Aber es ist nur in Sellerie 3.0 verfügbar und früher. Es gibt keine solche Funktion in der Verbraucherklasse auf Sellerie 3.1.

Wie stelle ich die Verbindung zum Broker jetzt wieder her?

Antwort

0

Die Arbeiter Interna wurde neu geschrieben „bootsteps“ in 3.1 zu verwenden (siehe http://docs.celeryproject.org/en/latest/userguide/extending.html)

ich beste Art und Weise denken, die Broker-Verbindung von einem Fernsteuerbefehl zum Zurücksetzen wäre panel.consumer.connection.close() stattdessen zu verwenden:

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"} 

Diese die Arbeiter zwingen werden neu gestartet wurde, um alle Verbraucher im Zusammenhang bootsteps (siehe die Grafik in dem obigen Link)

übrigens das Argument panelumbenanntaber Sie können es benennen, wie Sie möchten. Der Logger ist für den Status nicht mehr verfügbar, Sie müssen ihn also importieren.

+0

Danke für Hilfe, fragen! Ich werde mir Bootsschritte genauer ansehen. –

Verwandte Themen