Django - wykonywanie kodu co x sekund

0

Cześć!
Chciałbym, aby w django w tle wykonywał się pewien kod, tz co np. sekundę sprawdzam ile mam wpisów w bazie danych. Jeżeli dojdzie nowy wpis, chciałbym aby wykonał się pewien kod.
Wiecie jak to zrobić?
Z góry dziękuję za pomoc :)

0

W zależności od tego co chcesz osiągnąć, Celery http://docs.celeryproject.org/en/latest/index.html i integracja z Django http://docs.celeryproject.org/en/latest/django/first-steps-with-django.html albo **Signals ** które są częścią Django https://docs.djangoproject.com/en/2.0/topics/signals/.

Jeżeli kod ma wykonywać się zawsze co jakiś czas to rozwiązaniem jest Celery. Jeżeli kod ma być wykonywany po jakiejś akcji, to lepszym rozwiązaniem może być użycie sygnałów.

2

https://pypi.python.org/pypi/schedule

Proszę bardzo. Do prostych zadań jak znalazł.

0
siloam napisał(a):

https://pypi.python.org/pypi/schedule

Proszę bardzo. Do prostych zadań jak znalazł.

Wydaje się najlepszym z tutaj podanych pomysłów. Mam jeszcze pytanie: gdzie mam to dodać, tz. do którego pliku w django, aby działał cały czas w tle?

0

Problem z tym jest taki, że będziesz musiał utrzymywać proces np. supervisorem (chyba?). Jeśli chciałbyś to robić nowym wpisie danej tabeli to najlepiej skorzystać z sygnałów lub podpiąć się kodem pod tworzenie danego obiektu. W celery musisz mieć workera więc też jakiś narzut jest. CRON jest o tyle wygodny, że nie musisz niczym się martwić

0

A zwykły cron nie wystarczy???

0

Wpisy do bazy danych wysyłam z zewnątrz (raspberry pi) więc trochę słabo.
W przypadku cron będę musiał za każdym razem łączyć się z bazą danych i działanie na danych z bazy danych jest trochę cięższe, niż np odwołanie się do modelu w django :/

db = MySQLdb.connect(host="localh", 
user="xx",  
 passwd="xx",
db="xx")

Chyba że jest jakiś łatwiejszy sposób na połączenie się z bazą danych?

0

Czytaj drugi post tego tematu. Z crona uruchamiasz tę komendę i działasz normalnie jak w django.

0

Rzeczywiście jest cięższe z crona? Przecież, jeśli zmiana zachodzi w bazie danych, to Django też musi to jakoś odczytać? Czy nie?

0

Dzięki za pomoc! :)

0

@Kuba K: A tak mi przyszło do głowy -- nie można z drugiej strony? To znaczy: nie monitorować bazy danych, tylko żeby proces, któy ją modyfikuje, uruchamiał po modyfikacji to, co ma być w cronie...?

0

Tak raczej nie zrobię,
Mam raspberry pi, które odczytuje wartości z czujników, łączy się z bazą danych i tworzy nowy rekord, w django chcę obrabiać te dane, które przesłało rp.

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