2011-08-04 12 views
17

Muszę wdrożyć Seler w istniejącym systemie. W poprzedniej wersji systemu korzystano już ze standardowego rejestrowania w Pythonie.Użyj standardowego logowania Python w Celery

Mój kod jest podobny do kodu poniżej. Przetwarzaj jeden i przetwarzaj dwa są funkcjami innymi niż Celery, które rejestrują się wszędzie. Używamy rejestrowania do śledzenia utraty danych, jeśli dzieje się coś złego.

@task 
def add(x,y): 
    process_one(x,y) 
    process_two(x,y) 

Jak mogę zaimplementować selera i użyć standardowego rejestrowania w Pythonie zamiast rejestrowania selera, aby nasz stary system rejestrowania nie został utracony?

Próbowałem zmienić import logging z Python na: logger = add.get_logger() i przekazać logger do wszystkich funkcji, ale nie sądzę, że jest to dobra praktyka. Potrzebuję innego rozwiązania.

Aktualizacja: aby dodać rejestrowania aplikacji w wyrębu seler, można wykonać:

$ manage.py celeryd -v 2 -B -s celery -E -l debug --traceback \ 
    --settings=settings --logfile=/(path to your log folder)/celeryd.log 

Z -l (rejestrowania) jako debug, nasza aplikacja/rejestrowanie Python jest automatycznie włączone w naszym rejestrowania naciowego: nie ma potrzeby wykonać logger = add.get_logger().

Odpowiedz

17

Prawdopodobnie chcesz to ustawienie:

CELERYD_HIJACK_ROOT_LOGGER = False 

mi powiedzieć, jak to działa obecnie.

Btw, powód to hijacks rejestratora korzeniowy jest ponieważ niektóre źle napisane biblioteki konfiguruje rejestrowanie, coś biblioteka nigdy nie powinien robić, co skutkuje użytkowników doświadcza żadnego wyjścia z pracownikiem celeryd :(

+0

Hi Asksol, dziękuję za odpowiedź: Ya, zgadzam się z tobą na temat złej biblioteki, już wypróbowałem rzecz CELERYD_HIJACK_ROOT_LOGGER Kiedy konsultowałem się z moim przyjacielem, powiedział mi, że nie jest rozsądne, aby CELERYD_HIJACK_ROOT_LOGGER = Fałsz, ponieważ logowanie pracowników selera jest bardzo ważne i wydajne, a wynik jest taki, że seler tylko przekierowuje odpowiedzialność dziennika z selera do logarytmu root/python, a wynik jest taki sam, myślę, że jeśli tak się stanie, wolę używać selera selera zamiast p ython jeden. – cactuarz

+6

Zatem biblioteka selera ustawia rejestrowanie, ponieważ źle napisane biblioteki konfigurują rejestrowanie? ;) Brzmi jak "wyglądasz jak kłopot, więc lepiej zastrzelę cię jako pierwszy". –

+0

@hheimbuerger: Hehe, niezły. Ale nie jest tak celne myślenie o Selerym jako bibliotece. Seler to rozproszona kolejka zadań * aplikacja *, którą po prostu konfigurujesz (w formie kodu) ze szczegółami, aby osiągnąć to, co chcesz. Prawdą jest, że może to stać się trochę mętniejsze, gdy integruje się z * innymi aplikacjami *, takimi jak Django. – CryingCyclops

Powiązane problemy