Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Schimbare adresa DNS IPv4 pe rout...

Recomandare Barebone

Monede JO 2024

Suprasolicitare sistem electric
 CIV auto import

Mutare in MOZAMBIC - pareri, expe...

Scoatere antifurt airtag de pe ha...

Magnet in loc de clește pent...
 Cumparat/Locuit in apartament si ...

Pot folosi sistemul PC pe post de...

Sokol cu distorsiuni de cross-over

Filtru apa potabila cu osmoza inv...
 Kanal D va difuza serialul “...

Upgrade xiaomi mi11

securitate - acum se dau drept - ...

Farmacia Dr Max - Pareri / Sugest...
 

A lucrat cineva cu Flask python-python framework for web apps.

- - - - -
  • Please log in to reply
5 replies to this topic

#1
ursudepadure

ursudepadure

    Junior Member

  • Grup: Members
  • Posts: 232
  • Înscris: 28.04.2012
Trebuie sa transmit niste date dintr-un program in Python catre o pagina  web (localhost deocamdata).  Aceste date trebuie sa fie transmise continuu si sa apara cumva ca acest ceas:
https://codepen.io/uniqname/pen/eIApt

Sau exemplul de pe w3school.
https://www.w3school...js_timing_clock

In aceste exemple datele afisate sunt furnizate de catre sistemul de operare.

I cazul meu, trebuie sa preiau datele dintr-un fisier virtual (temporar) de pe server si sa le afisez intr-o maniera asemantoare ceasurilor de mai sus.

Din anumite motive, dupa ce am instalat LAMP si am incercat cu php, am niste erori ciudate date de catre php, desi html si java script merg bine. Dar atat timp cat nu pot folosi php nu pot citi nimic de pe server. Voi intreba la sectiunea de PHP - Apache, daca imi pot da un sfat.

M-am gandit ca flask ar fi o solutie, mai ales ca toate programele mele sunt scrise in python. As putea integra mai bine. Dar inainte de a instala sau a invata mai multe as intreba ceva despre structura acestui framework. Unde este directorul similar cu www in WAMP si LAMP? Exista asa ceva? Inca nu stiu mai nimic despre asta, dar ma gandesc daca merita sa il instalez pentru ce am descris mai sus ca as avea de facut.

O solutie ar fi sa evit sa folosesc php daca tot nu merge si sa incerc cu socket intre programul in pyton si javascript. Dar poate ca si flask este o solutie mai buna.

Edited by ursudepadure, 11 May 2019 - 17:22.


#2
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
Daca stii python deja, atunci python e bun, indiferent de framework.

Problema ta nu pare sa tina de limbaj sau de framework, ci de protocolul de comunicare: HTTP.

In ecosistemul python nu ai un "Document Root", pentru ca nu ai un server cu python integrat in el.

Si asta e indiferent de flask, asa e in toate framework.

Ceea ce ai e: framework-ul insusi are in el integrat serverul HTTP. Cand pornesti programul tau, pornesti un server HTTP. De fapt nu e un server HTTP pur, ci unul WSGI, dar astea sunt detalii.

Cu acest server integrat nu deservesti fisiere statice. Poti, dar curat este sa NU faci asta. Ceea ce faci in schimb este: pui in fata serverului WSGI un alt server HTTP, precum apache sau nginx, si el deserveste fisierele statice. Daca acest server detecteaza ca in URL ai o pagina dinamica, atunci nginx/apache routeaza cererea catre serverul local WSGI, de la care primeste raspunsul generat dinamic si il returneaza apoi browserului.


Cat despre problema efectiva, mai bine o descrii in detaliu, ca nu stii lucruri si poate exista abordari mai bune.

#3
ursudepadure

ursudepadure

    Junior Member

  • Grup: Members
  • Posts: 232
  • Înscris: 28.04.2012
Am un proiect pe Raspberry (Raspian, un fel de debian).  Eu controlez sistemul prin SMS cu ajutorul unui modem. Sisemul are atasat senzori, camera infrared, etc. Toti parametrii pot fi trimisi la cerere prin SMS (in functie de un cod SMS, trimite poze, temperatura, numar de poze, alte informatii).

Ce doresc eu este ca anumite informatii (ele sunt prelucrate de programe scrise in Python) sa fie afisate pe orice browser din reteaua locala.  Nu vreau sa public nimic. Browserul are doar rolul  de a afisa in timp real acei paramterii pe care eu de regula ii primesc prin SMS sau Email.

Cum php nu imi merge bine (am scris detalii pe forumul de php), vreau sa incerc alte variante. Tot ce am eu nevoie este ca acele valori sa apara incontinuu, fara intrerupere pe ecran in browsere. M-am gandit sa folosesc socket. Am folosit intre doua programe in Python si merge bine (am si un alt dispozitiv mai mic care arata anumite date pe un display cu segment-leds, ca un ceas, si ele comunica prin socket in Python).  Nu am incercat sa folosesc socket intre javascript si programul meu in python. Am gasit ceva sfaturi dar nu stiu multe despre asta, pana la urma javascript ruleaza la client. Dar teoretic ar fi posibil.

Daca php ar fi mers ar fi fost usor. Citeam datele cu php dintr-un fisier temporar aflat in RAM si pasam valorile catre java script. Am vazut ca se poate, dar daca nu imi merge php nu pot face asa ceva. Am experienta cu WAMP si mi-ar fi fost mai usor.

Cam asta e problema descrisa cu mai multe detalii.

Edited by ursudepadure, 11 May 2019 - 17:57.


#4
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
Ok, cum as face eu:

Pe PI ruleaza doua programe: un program in python (=scripturile pe care le ai deja, care extrag acele informatii, fara flask sau web).

Ce iti recomand e sa extinzi aceste scripturi / programe astfel incat sa ruleze permanent si sa salveze datele de la senzori etc intr-o baza de date sqlite.

In paralel, pe PI mai ruleaza o aplicatie: aplicatia web care citeste ultima linie din baza de date pentru fiecare senzor, si o afiseaza. Aplicatia web are si un javascript (care ruleaza in browserul fiecarui vizitator), care trimite o cerere ajax la aceasta aplicatie web pentru a primi asincron datele actualizate. Cand javascript primeste datele, inlocuieste in browser informatiile vechi cu informatiile noi, tocmai primite de la serverul web.


Deci as separa achizitia de date de expunerea lor catre public. De ce? Vreau sa colectez mereu toate datele, sa am intreaga istorie a lor, chiar daca nimeni nu viziteaza pagina mea sau e o problema cu aplicatia web.

In baza de date (de ex. sqlite) voi avea mereu toate datele.

 ursudepadure, on 11 mai 2019 - 17:55, said:

Am experienta cu WAMP si mi-ar fi fost mai usor.
Asta e problema, faptul ca ai "experienta" cu un produs specific, WAMP, si nu esti stapan pe "tech stack". Pentru ca "WAMP" te-a protejat de cunoastere, ti-a oferit totul din click, in loc sa te expuna la cunoastere.

#5
ursudepadure

ursudepadure

    Junior Member

  • Grup: Members
  • Posts: 232
  • Înscris: 28.04.2012
Eu am deja log files unde din ora in ora sunt scrise anumite date mai importante.  Aceste date sunt preluate de niste programe care ruleaza in paralel si care folosind matplotlib construieste grafice (cu valorile corespunzatoare din ora in ora). Aceste grafice pot fi trimise, deasemnea la cerere, prin SMSs pe o adresa de Email care se poate seta.

Ca sa fiu mai precis, vreau ca atunci cand senzorul de miscare este activat, exact in acel timp sa imi arate un numar care reprezinta a cata activare este. Daca sensorul este activat de foarte multe ori, atunci probabil, folosind baza de date voi avea foarte multe scrieri in SD card, ceea ce eu vreau sa evit, intrucat numarul de scrieri si citiri de pe un SD card este limitat si sistemul acesta va trebui sa ruleze pe o perioada mai lunga. Eu doream sa scriu acele valori care trebuie afisate in timp real intr-un folder virtual (fisier temporar) care este doar in RAM. Am vazut ca merge bine sa scriu si sa citesc in aceste fisiere temporare si protejez SD cardul de prea multe citiri si scrieri. De acolo, repede sa le citesc cumva si sa le preia un javascript si cod html pentru a le afisa.

Multumesc pentru sfaturi si mai ales pentru promtitudinea cu care ai raspuns.



Am sa iau totusi in considerare si solutia pe care mi-ai propus-o tu daca nu pot altfel.

Edited by ursudepadure, 11 May 2019 - 18:28.


#6
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006
Eu personal as vrea sa colectez aceste date, datele sunt foarte importante pentru mine. Nu le-as vrea in loguri, ci intr-o baza de date, fie ea si doar sqlite. Si as cumpara storage special pe care as pune baza de date, si as face backup regulat.

Ar merita investitia de hardware (storage in plus).

DAR

Nu stiu care sunt cerintele tale. Inteleg problema cu sdcard.


Daca am inteles corect "exact in acel timp sa imi arate un numar", atunci ceea ce vrei este push notifications: serverul web (php sau python) ii trimite clientului update.

Pentru asta vrei websockets, daca vrei sa fie instantaneu si cu utilizare optima de resurse pe PI: https://blog.miguelg...lask-and-gevent

Anunturi

Chirurgia spinală minim invazivă Chirurgia spinală minim invazivă

Chirurgia spinală minim invazivă oferă pacienților oportunitatea unui tratament eficient, permițându-le o recuperare ultra rapidă și nu în ultimul rând minimizând leziunile induse chirurgical.

Echipa noastră utilizează un spectru larg de tehnici minim invazive, din care enumerăm câteva: endoscopia cu variantele ei (transnazală, transtoracică, transmusculară, etc), microscopul operator, abordurile trans tubulare și nu în ultimul rând infiltrațiile la toate nivelurile coloanei vertebrale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate