Flask - wyświetlanie danych bez przeładowania strony

Flask - wyświetlanie danych bez przeładowania strony
CG
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 3 lata
  • Postów:76
0

Hej,
mam pytanie dotyczące pewnej aplikacji wykorzystującej flask.
Na prostym przykładzie:
Po stronie serwera inkrementuję pewną wartość, wartość ta powinna być wyświetlana in real time na mojej stronie (bez jej przeładowywania).
Oczywiście nie chodzi o to, żeby moja inkrementowana zmienna uaktualniała się na stronie po wciśnięciu jakiegoś przycisku itp.

Jak się za coś takiego zabrać? Jakieś "eleganckie" rozwiązanie? Oczywiście nie szukam gotowca - a bardziej techniki itp.
Dzięki za wszelkie wskazówki ;)

superdurszlak
  • Rejestracja:prawie 7 lat
  • Ostatnio:minuta
  • Lokalizacja:Kraków
  • Postów:2000
1

Event source / server sent event powinno wystarczyć. Zamiast zwykłego żądania HTTP leci long-lived HTTP request, połączenie jest podtrzymywane i serwer dorzuca sobie kolejne dane do (w odpowiednim formacie), po stronie JS możesz to odebrać i wykorzystać np. do jakiegoś licznika, progress bara itp.

Niestety jest to jednokierunkowe, do komunikacji dwukierunkowej to już prędzej jakieś websockety.

Najprostszy przykład event source w czystym Flask znajdziesz tutaj - opakowuje generator w Response, generator musi zadbać o właściwy format danych (tu jest pokazane tylko dane, można też wysłać np. informację o błędzie czy zakończyć) resztę załatwia Flask.

Mniej dziabaniny byłoby pewnie z wykorzystaniem Flask-SSE lub innego gotowca który pozwala to zrobić ładniej i zgrabniej, ale nie znam tego modułu więc się nie wypowiem.


edytowany 1x, ostatnio: superdurszlak
CG
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 3 lata
  • Postów:76
0

Pod Django sprawa wygląda podobnie?
Ogółem pod jakimi terminami powinienem szukać? Jakiś przykładów, prostych implementacji?
Szukałem pod kątem progress bar itp. ale niestety jak na razie nic :D

edytowany 1x, ostatnio: CzakuGim
superdurszlak
  • Rejestracja:prawie 7 lat
  • Ostatnio:minuta
  • Lokalizacja:Kraków
  • Postów:2000
0
CzakuGim napisał(a):

Pod Django sprawa wygląda podobnie?

Nie wiem, nie znam Django. Pewnie jak wyszukasz "Django SSE" lub podobne hasła to coś znajdziesz.

Ogółem pod jakimi terminami powinienem szukać?

Przecież w poście i linkach przewinęły się ładnych parę razy

  • Event source
  • Server side events / SSE

Jakiś przykładów, prostych implementacji?
Szukałem pod kątem progress bar itp. ale niestety jak na razie nic :D

Przecież dostałeś proste przykłady w linkach


CG
Tak, tak właśnie je testuję :)
RA
  • Rejestracja:prawie 8 lat
  • Ostatnio:około 2 miesiące
  • Postów:221
1
CG
Na pewno przejrzę jak tylko znajdę chwilę czasu! Dzięki ;)
GR
  • Rejestracja:około 13 lat
  • Ostatnio:ponad 4 lata
  • Postów:7
1

Alternatywnym podejściem może być też polling. Skrypt po stronie przeglądarki może w 'backgroundzie' regularnie odpytywać jakiś Twój url pod którym będzie aktualna wartość twojej zmiennej.

CG
Bardzo ciekawe podejście, na pewno sprawdzę. Dzięki! :)

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.