Welches Argument gebe ich an die Funktion get_task_logger () von Sellerie weiter?

8

Die sellery 3.x Dokumentation zum Logging empfiehlt, den Task Logger einzurichten so:

%Vor%

Wenn ich das tue, wird CELERYD_TASK_LOG_FORMAT ignoriert und die Protokollanweisungen verwenden stattdessen CELERYD_LOG_FORMAT , wo ich %(task_name)s und %(task_id)s nicht verwenden kann.

Meine Aufgabe befindet sich in einem Modul tasks in meiner App myapp . Daher ist __name__ myapp.tasks .

Ich vermute das Problem sind diese Zeilen in celery/utils/log.py :

%Vor%

Aus irgendeinem Grund muss das an get_task_logger() übergebene Modul ein Modul der ersten Ebene sein, andernfalls ist der Task-Logger nicht angehängt. Es gibt keinen Kommentar, der erklärt, warum dies der Fall sein muss (und ich kann mir keinen Grund vorstellen, warum Sie diese Einschränkung wirklich hinzufügen würden). __name__ funktioniert nicht, da es auf ein Modul der zweiten Ebene verweist.

Mache ich einen Fehler oder sind die Dokumente einfach falsch? Wenn ja, was soll ich stattdessen an get_task_logger() weitergeben?

    
Henrik Heimbuerger 16.04.2013, 17:39
quelle

1 Antwort

2

Ab 2014-10-05 ist dies nicht mehr der Fall. Die Weitergabe von __name__ scheint nun gut zu funktionieren ( aktuelle Implementierung ).

Denken Sie daran, dass Ihre Task-Logger weiterhin von celery.task erben müssen. Der übergeordnete Logger celery wird standardmäßig nicht an den Root-Logger weitergegeben. Daher sollten Sie in Ihrer Logging-Konfiguration einen Logger für celery.task definieren.

    
Henrik Heimbuerger 05.10.2014, 14:21
quelle

Tags und Links