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()
.
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
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". –
@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