/ / Django konfiguruje zaplanowane zadanie bez Crona - django, zadanie, harmonogram

Django konfiguruje zaplanowane zadanie bez Cron - django, zadanie, harmonogram

Wiem, że jest wiele pytań o to, szczególnie to: Django - skonfigurować zaplanowane zadanie?.

Ale chcę zrozumieć, jak faktycznie działa zaplanowane zadanie w Django?

Mój uproszczony sposób myślenia o tym jest taki, że gdzieś istnieje nieskończona pętla, coś takiego (działa co 60 sekund),

import time
interval=60  #60 seconds
while True:
some_method()
time.sleep(interval)

Pytanie: gdzie umieszczasz tę nieskończoną pętlę? Czy jest jakaś część aplikacji Django, która działa w tle obok reszty aplikacji?

Dzięki!

Odpowiedzi:

1 dla odpowiedzi № 1

Django nie wykonuje zaplanowanych zadań. Jeśli chcesz zaplanowanych zadań, potrzebujesz demona, który działa cały czas i może uruchomić Twoje zadanie w odpowiednim czasie.

Django działa tylko po wysłaniu żądania HTTP. Jeśli nikt nie wysyła żądania HTTP przez miesiąc, django nie uruchamia się przez miesiąc. Jeśli w tej sekundzie jest 45 żądań HTTP, django uruchomi się 45 razy w tej sekundzie (przy braku buforowania).

Możesz pisać skrypty w środowisku django(nazywane poleceniami zarządzania), które są wywoływane z niektórych usług zewnętrznych (takich jak cron). To jest tak blisko, jak tylko możesz dostać się do tego, czego chcesz. Jeśli tak jest, to pytanie / odpowiedź, na które się powołujesz, jest miejscem, w którym można uzyskać porady.

Prawdopodobnie w systemie unixy cron jest najprostszyusługa zewnętrzna do pracy. W najnowszych systemach Linux, cron ma katalog /etc/cron.d, do którego można upuścić plik konfiguracyjny cron aplikacji i nie będzie on kolidował z żadnymi innymi zadaniami cron w systemie. Edycja istniejących plików nie jest konieczna.