Przeniesienie skryptu do Django

0

Cześć.

Napisałem skrypt w pythonie, który za pomocą response i BeautifulSoup pobiera pewną zawartość strony i wycina z niej potrzebne informacje.

Chciałem teraz napisać aplikację, która będzie te dane prezentować użytkownikowi.
Pomyślałem, że dobrym wyborem może być Django, dlatego, że:

  • skrypt mógłby się wykonywać na serwerze co określony czas, np. 1h, nie musiałbym mieć włączonego komputera i uruchomionej aplikacji,
  • miałbym dostęp do informacji z każdego urządzenia z internetem.

Zacząłem kurs Django, jednak zaaplikowanie tego skryptu nie jest takie proste, jak myślałem.
Myślę o tym, żeby kod skryptu umieścić w pojedynczej aplikacji Django, jednak nie mam na razie wiedzy, jak to zrobić, i czy jest to dobry pomysł.

Zależy mi także na tym, aby dane pobrane aktualnie i wcześniej były ze sobą porównywane, i jeśli wystąpi rozbieżność (dodano obiekt / usunięto obiekt), to ma to zostać uwidocznione w aplikacji Django wyświetlającej dane. Chciałbym się dowiedzieć, czy takie coś jest do wykonania w Django, czy może lepiej próbować wgrać jakoś inaczej ten skrypt, lub w ogóle zrezygnować z niektórych założeń i zacząć pisać aplikację desktopową.
Co polecacie?

0

musisz dać więcej informacji: co robi ten skrypt, w jakiej postaci są wyniki, czego dokładnie oczekujesz - bo dać to się na 99% da; a tak btw jeśli coś lżejszego niż django to flask :)

0

Co robi skrypt? Zaprezentuję poprzez analogię do biblioteki.

Strona biblioteki, zawiera podstrony, podstrona zawiera elementy w postaci listy.

Podaję w argumencie adres www biblioteki. Skrypt sprawdza, ile podstron zawiera strona. Wchodzi na każdą z podstron i zapisuje potrzebne informacje do zmiennych - na razie wyświetlam je na bieżąco w konsoli - postać wygląda następująco:

-> podstrona 1:
Mickiewicz - Pan Tadeusz
Mickiewicz - Pan Tadeusz
Mickiewicz - Pan Tadeusz
-> podstrona 2:
Mickiewicz - Pan Tadeusz
Mickiewicz - Pan Tadeusz
Mickiewicz - Pan Tadeusz
...

Działanie całego skryptu zajmuje około pół minuty - w zależności od ilości elementów, przeważnie jest ich 100.

--

Co do frameworku - chciałem się już nauczyć obsługiwać Django - jest oparty na pythonie i popularniejszy niż Flask.
Tylko nie mam pewności, czy takie coś da się w miarę łatwo zrealizować.

0

Ale chcesz przez Django tylko wyświetlać dane powstałe z działania skryptu? W takim razie wielkiej filozofii tu nie ma, używasz Celery do odpalania skryptu, wynik zapisujesz do bazy wraz z datą, w Django po prostu pobierasz dane z bazy danych.

0

jeśli skrypt ci już działa i masz wyplute wyniki w jakiejś postaci (list, krotek, obiektów, whatever) to już prawie meta, wystarczy że ogarniesz podstawy django/flaska czy jak @Spine podpowiada tornado i wyświetlisz wyniki na stronie :)
tornado mogłoby być dobrą opcją - mógłbyś pobieranie podzielić na mniejsze etapy i pobierać asynchronicznie - wtedy mógłbyś pobierać każdą z podstron osobno i czas by był troche krótszy w oczekiwaniu na jakiś wynik na stronie**

**tak sobie tylko myślę.. :D

0

Chcę wyświetlać dane w Django, ale zostało jeszcze przetwarzanie.

Myślałem o tym, żeby zrobić tak, żeby wyświetlić to również w formie tabelki, takiej przejrzystej, kolorowej (podobnie jak na stronie: http://stancje.dlastudenta.pl/ ), i gdy pojawi się nowy tytuł, to django ma podświetlić wiersz na zielono, a gdy tytuł zniknie, to na czerwono. Chciałbym także dodać np. takie pole: od jakiego czasu (np. ile dni) książka jest już dostępna / niedostępna. I nie wiem, czy to realizować w skrypcie, czy już w django.

Myślę, że skorzystam z tego Celery.
Tam po prostu odpalam skrypt, niezależnie od Django. Tylko takie pytanie: nie ma problemu, gdy trafię, że jednocześnie skrypt zapisuje dane do bazy, a ja w django chcę te dane wyświetlić?

0

I nie wiem, czy to realizować w skrypcie, czy już w django.

Skrypt ma tylko włożyć dane do bazy, to co z nimi zrobisz w Django to twoja sprawa.

nie ma problemu, gdy trafię, że jednocześnie skrypt zapisuje dane do bazy, a ja w django chcę te dane wyświetlić?

Nie.

Co do samej bazy danych, to, jeśli chcesz stworzyć modele z istniejącej bazy, masz dwie opcje:

  1. Auto-generowanie modeli z istniejącej bazy
  2. Użycie opcji db_table i db_column na istniejących modelach, żeby zmapować je do istniejących tabel w bazie.

Lub odwrócić sprawę (jeśli nie masz jeszcze żadnych danych w bazie) i stworzyć modele normalnie, puścić migrate i w skrypcie używać tych nazw.

0

W chwili obecnej skrypt nie zapisuje nic do bazy, pamięta tylko w zmiennych, więc modele mogę zrobić od nowa.
Przerobię kurs Django i myślę, że dalej jakoś dam radę.

Dziękuję wszystkim za odpowiedzi, a szczególnie @Wizzie za podpowiedź Celery.
Pozdrawiam.

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