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 № 1Django 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.