Aktualizacja danych w tle django

0

Witam.
Zrobiłem aplikację która pobiera dane smogowe zapisuje je do bazy, za każdym wywołaniem strony sprawdza x miast o dokładność a jeśli są nie aktualne pobiera je i aktualizuje. Czy jest możliwość zrobienia tego pobierania danych i aktualizacji w tle lub jakiś inny pomysł. Dzięki wielkie.

1

Jasna sprawa. Możesz zrobić to asynchronicznie za pomocą Celery i jakiejś kolejki - Rabbit/Redis. Ja osobiście używam Rabbita.

Polega to na tym, że wysyłasz sobie określone zadanie, by wykonał się określony kod, do kolejki, kolejka przekazuje taska do celery i zwraca, że task został przekazany, następnie kod twojej głównej aplikacji działą sobie dalej, nie blokując się, a celerka już sobie rzeźbi w oddzielnym procesie i ściąga dane, procesuje je, wkłada do bazy, czy co tam sobie zażyczysz.

Jesli chcesz wykonywać taski cyklicznie, np. raz dziennie, co godzine, łateva, to interesuje cię potem Celery Beat.

Ogółem pamiętaj też, by najlepiej oddzielić celery beat workera od workera zwykłego na produkcji i poczytaj o asynchroniczności.

Tutaj możesz poczytać więcej o celery i jak ją dodać w kontekście django: https://realpython.com/asynchronous-tasks-with-django-and-celery/

0

@hacker09 tak, tu masz przykład: https://github.com/grski/scrapppy
rozwiązania powyżej raczej ci nie polecam, niezbyt good practice moim zdaniem

1 użytkowników online, w tym zalogowanych: 0, gości: 1