Flask - wyświetlanie danych bez przeładowania strony

Odpowiedz Nowy wątek
2019-11-03 00:20
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 ;)

Pozostało 580 znaków

2019-11-03 00:47
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.


Nie znam się, ale się wypowiem
edytowany 1x, ostatnio: superdurszlak, 2019-11-03 00:54

Pozostało 580 znaków

2019-11-03 13:26
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, 2019-11-03 13:30

Pozostało 580 znaków

2019-11-03 13:38
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


Nie znam się, ale się wypowiem
Tak, tak właśnie je testuję :) - CzakuGim 2019-11-03 13:45

Pozostało 580 znaków

2019-11-03 14:24
1

Może to https://channels.readthedocs.io/en/latest/

Na pewno przejrzę jak tylko znajdę chwilę czasu! Dzięki ;) - CzakuGim 2019-11-09 14:04

Pozostało 580 znaków

2019-11-03 14:38
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.

Bardzo ciekawe podejście, na pewno sprawdzę. Dzięki! :) - CzakuGim 2019-11-09 14:05

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