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 :)

- Rejestracja:około 8 lat
- Ostatnio:ponad 6 lat
- Postów:14

- Rejestracja:ponad 10 lat
- Ostatnio:ponad 5 lat
- Lokalizacja:Rzeszów
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.

- Rejestracja:prawie 8 lat
- Ostatnio:prawie 2 lata
- Postów:99
https://pypi.python.org/pypi/schedule
Proszę bardzo. Do prostych zadań jak znalazł.

- Rejestracja:około 8 lat
- Ostatnio:ponad 6 lat
- Postów:14
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?
- Rejestracja:prawie 11 lat
- Ostatnio:dzień
- Postów:973
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ć

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

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