Wpis z mikrobloga

#python #devops #sysadmin

Mireczki, cały dzień to debuguję, przychlę nieba jakiejś dobrej duszyczce za pomoc:

Na serwerze developerskim miałem od dłuższego czasu jakiś fakowy task celery, który tylko coś dodawał do logów.
Stack:
python 3.7.3
django 2.2
celery 4.3
kombu i amqp najnowsze, nie pamiętam już teraz, zaraz napiszę czemu
wszystko szło przez rabbita

daemonizacja ustawiona przez systemd

Wszystko ładnie śmigało, rzadko wrzucam tam najnowsze wersje kodu, dzisiaj był ten dzień i zobaczyłem, że celery mi padło 3 dni temu, bug był całkiem znany w necie, z tego co wyczytałem connection pomiędzy celery >4.1.1 a rabbitmq potrafił łapać takie zwiechy, np:
https://github.com/celery/celery/issues/4867
i jego workaround ( downgrade celery do 4.1.1)

zrobiłem to samo i o ile worker celery wstał, to zacząłem dostawać niezarejestrowane taski

I teraz co zrobiłem:
1) ostatnio znalazłem dziwne zachowanie celery, gdy są jakieś niedoinstalowane paczki ( https://stackoverflow.com/a/52790970/7474605) ale to już dawno sprawdziłem, nadziałem się na to kilka tygodni temu)
2) kombinowałem z wersjami kombu i amqp, bez powodzenia
3) odpalając zarówno lokalnie jak i na serwerze celery -A celerycfg:app worker --loglevel=DEBUG widzę ścieżkę do mojego taska
4) ścieżki wydają się ok, chyba, że już za długo nad tym siedzę i nie widzę czegoś najbardziej oczywistego
5) próbowałem dodatkowo zdefiniować CELERY
IMPORTS w settingsach ( wedle tego https://stackoverflow.com/a/38836969/7474605) ale celery nie chciało mi wstać z tym settingiem, nie udało mi się tego zdebugować ( sprawdziłem jedynie, że nie ma żadnych errorów po stronie django i normalnie wczytuje się ta stała)
6) proces celerybeat cały czas śmiga i wysyła taski to workera

teraz trochę mojego kodu:
1) sam error - https://pastebin.com/jNuSvqfd
2) settingi celery worker'a w systemd https://pastebin.com/sbkQQLAu
3) zmienne do celery.service, https://pastebin.com/880bmtkt
4) urywek z celery -A app report https://pastebin.com/ASCcMpST z wersjami
5) celery_cfg https://pastebin.com/0jjuiyc6

W sumie to tyle z kodu, gdzieś jest głupi bład albo ja czegoś nie rozumiem, za każdą pomoc będę bardzo wdzięczny