Django - wykonywanie kodu co x sekund

Odpowiedz Nowy wątek
2018-02-12 15:40
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 :)

Pozostało 580 znaków

2018-02-12 15:49
0

https://docs.djangoproject.co[...]o/custom-management-commands/ + CRON

edytowany 1x, ostatnio: Rado95, 2018-02-12 16:40

Pozostało 580 znaków

2018-02-12 16:33
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[...]/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.

Pozostało 580 znaków

2018-02-13 10:02
1

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

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

Pozostało 580 znaków

2018-02-14 16:57
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?

Pozostało 580 znaków

2018-02-14 18:44
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ć

Pozostało 580 znaków

2018-02-14 21:40
0

A zwykły cron nie wystarczy???

Pozostało 580 znaków

2018-02-15 17:21
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?

edytowany 1x, ostatnio: Kuba K, 2018-02-15 17:21

Pozostało 580 znaków

2018-02-15 21:13
0

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

Pozostało 580 znaków

2018-02-15 21:18
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?

Pozostało 580 znaków

2018-02-15 22:11
0

Dzięki za pomoc! :)

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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