Django - wykonywanie kodu co x sekund

Django - wykonywanie kodu co x sekund
Kuba K
  • Rejestracja:około 8 lat
  • Ostatnio:ponad 6 lat
  • Postów:14
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 :)

RA
  • Rejestracja:prawie 8 lat
  • Ostatnio:około miesiąc
  • Postów:221
0
edytowany 1x, ostatnio: Rado
racuh
  • Rejestracja:ponad 10 lat
  • Ostatnio:ponad 5 lat
  • Lokalizacja:Rzeszów
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.

siloam
  • Rejestracja:prawie 8 lat
  • Ostatnio:prawie 2 lata
  • Postów:99
2

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

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


Kuba K
  • Rejestracja:około 8 lat
  • Ostatnio:ponad 6 lat
  • Postów:14
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?

AN
  • Rejestracja:prawie 11 lat
  • Ostatnio:dzień
  • Postów:973
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ć


Zdalna praca dla Senior Python Developerów --> PW
koszalek-opalek
  • Rejestracja:około 9 lat
  • Ostatnio:ponad 2 lata
0

A zwykły cron nie wystarczy???

Kuba K
  • Rejestracja:około 8 lat
  • Ostatnio:ponad 6 lat
  • Postów:14
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 :/

Kopiuj
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?

edytowany 1x, ostatnio: Kuba K
AN
  • Rejestracja:prawie 11 lat
  • Ostatnio:dzień
  • Postów:973
0

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


Zdalna praca dla Senior Python Developerów --> PW
koszalek-opalek
  • Rejestracja:około 9 lat
  • Ostatnio:ponad 2 lata
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?

Kuba K
  • Rejestracja:około 8 lat
  • Ostatnio:ponad 6 lat
  • Postów:14
0

Dzięki za pomoc! :)

koszalek-opalek
  • Rejestracja:około 9 lat
  • Ostatnio:ponad 2 lata
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...?

Kuba K
  • Rejestracja:około 8 lat
  • Ostatnio:ponad 6 lat
  • Postów:14
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.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.