Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: Python webserver  (gelezen 3172 keer)

Python webserver
« Gepost op: 2018/06/01, 14:20:06 »
Ik probeer een webserver op te zetten op een raspberry pi m.b.v Python
Het script ziet er als volgt uit:

#!/usr/bin/env python

import sys
import BaseHTTPServer
from SimpleHTTPServer import SimpleHTTPRequestHandler


HandlerClass = SimpleHTTPRequestHandler
ServerClass  = BaseHTTPServer.HTTPServer
Protocol     = "HTTP/1.0"

if sys.argv[1:]:
    port = int(sys.argv[1])
else:
    port = 8000
server_address = ('192.168.2.38', port)

HandlerClass.protocol_version = Protocol
httpd = ServerClass(server_address, HandlerClass)

sa = httpd.socket.getsockname()
print "Serving HTTP on", sa[0], "port", sa[1], "..."
httpd.serve_forever()

Dit werkt ok.   ^-^

Ik start het script met:
$ ./webtest.py

Ook dat werkt goed, ......totdat ik het terminal venster sluit. Dan stopt ook het script.
Een & toevoegen(om het script in de achtergrond te laten draaien)  aan de opdrachtregel helpt ook niet.   :'(
Dit komt omdat de responses van het script naar de terminal teruggestuurd worden. (ook in background mode)

Heb ook nog geprobeerd met:
$ ./webtest.py > /dev/null 2>&1
ook dat lukt niet om het script aan de gang te houden.

Hoe kan ik het script werkend houden, en toch het terminal venster sluiten. ?
(p.s. toegang to de raspberry pi is via ssh)


.
Miscere utile dulci. (Ter leering ende vermaeck)
http://henk.oegema.com  (On RaspberryPi2)
Registered linux user 520520.  In gebruik: Ubuntu  22.04.3 Hobby's: Radio Amateur callsign: PA2HO.  Interesses: Raspberry Pi & Arduino & Jetson Nano (voor AI & ML)

Offline MKe

  • Lid
Re: Python webserver
« Reactie #1 Gepost op: 2018/06/01, 15:18:57 »
Probeer eens:
nohup ./webtest.py &
Hiermee detach je een process van de runnende shell. stoppen is dan weer een ander probleem ;)
Andere methoden zijn screen of tmux.


Overigens is dit een zeer slechte methode om een webserver te starten en raad ik dit alleen aan als test. Er is niets dat het proces in de gaten houdt en zorgt dat het opnieuw gestart wordt indien nodig. In Ubuntu zou je een systemd scriptje maken, bij Raspberry weet ik dat niet.

« Laatst bewerkt op: 2018/06/01, 15:20:46 door MKe »
Mijn blokkendoos blog: http://mke21.wordpress.com/

Re: Python webserver
« Reactie #2 Gepost op: 2018/06/01, 17:21:24 »
Citaat
author=MKe link=topic=104306.msg1022543#msg1022543 date=1527859137
..............
Andere methoden zijn screen of tmux.

Screen is de oplossing.  (https://www.youtube.com/watch?v=hrd5zxDzo-g )
Bedankt voor de tip.   =D
« Laatst bewerkt op: 2018/06/01, 17:50:13 door henkoegema »
Miscere utile dulci. (Ter leering ende vermaeck)
http://henk.oegema.com  (On RaspberryPi2)
Registered linux user 520520.  In gebruik: Ubuntu  22.04.3 Hobby's: Radio Amateur callsign: PA2HO.  Interesses: Raspberry Pi & Arduino & Jetson Nano (voor AI & ML)

Re: Python webserver
« Reactie #3 Gepost op: 2018/06/01, 17:49:28 »
...........................................
...........................................
Overigens is dit een zeer slechte methode om een webserver te starten en raad ik dit alleen aan als test. Er is niets dat het proces in de gaten houdt en zorgt dat het opnieuw gestart wordt indien nodig. In Ubuntu zou je een systemd scriptje maken, bij Raspberry weet ik dat niet.

Ik ben een minimalistische webswerver aan het testen.
Die wil ik gaan gebruiken om de waarden van een remote sensor (DHT22 + ESP22E) uit te lezen.

Ik heb dus (nog) niks(?) nodig om het proces in de gaten te houden. ;)

Of misschien i.p.v. python webserver : nginx of httplite ?
Miscere utile dulci. (Ter leering ende vermaeck)
http://henk.oegema.com  (On RaspberryPi2)
Registered linux user 520520.  In gebruik: Ubuntu  22.04.3 Hobby's: Radio Amateur callsign: PA2HO.  Interesses: Raspberry Pi & Arduino & Jetson Nano (voor AI & ML)

Offline MKe

  • Lid
Re: Python webserver
« Reactie #4 Gepost op: 2018/06/01, 19:11:22 »
Nginx is zeker een goed webserver en simpel genoeg.

Re: Python webserver
« Reactie #5 Gepost op: 2018/06/01, 19:16:58 »
Nginx is zeker een goed webserver en simpel genoeg.

 :D

Ga ik eens proberen.

In python webserver kan ik makkelijk toegang krijgen tot de GPIO pinnen van de rpi.
In nginx moet ik dat allemaal nog uitzoeken.
Miscere utile dulci. (Ter leering ende vermaeck)
http://henk.oegema.com  (On RaspberryPi2)
Registered linux user 520520.  In gebruik: Ubuntu  22.04.3 Hobby's: Radio Amateur callsign: PA2HO.  Interesses: Raspberry Pi & Arduino & Jetson Nano (voor AI & ML)

Offline MKe

  • Lid
Re: Python webserver
« Reactie #6 Gepost op: 2018/06/01, 21:40:21 »
Dat snap ik niet.

Ik neem aan dat je Python gebruikt om die pinnen te benaderen. Dat heeft niets met een webserver te maken, toch?

Re: Python webserver
« Reactie #7 Gepost op: 2018/06/01, 22:58:33 »
Dat snap ik niet.

Ik neem aan dat je Python gebruikt om die pinnen te benaderen. Dat heeft niets met een webserver te maken, toch?

Ja, dat heeft het wel.  :)
De webserver ontvangt de data van een remote sensor (via het web), en die zelfde webserver toont die ontvangen data dan op een OLED display (via I2C,  aangestuurd via de GPIO pinnen).

Miscere utile dulci. (Ter leering ende vermaeck)
http://henk.oegema.com  (On RaspberryPi2)
Registered linux user 520520.  In gebruik: Ubuntu  22.04.3 Hobby's: Radio Amateur callsign: PA2HO.  Interesses: Raspberry Pi & Arduino & Jetson Nano (voor AI & ML)

Offline MKe

  • Lid
Re: Python webserver
« Reactie #8 Gepost op: 2018/06/02, 08:12:28 »
Dat snap ik niet.

Ik neem aan dat je Python gebruikt om die pinnen te benaderen. Dat heeft niets met een webserver te maken, toch?

Ja, dat heeft het wel.  :)
De webserver ontvangt de data van een remote sensor (via het web), en die zelfde webserver toont die ontvangen data dan op een OLED display (via I2C,  aangestuurd via de GPIO pinnen).
Ah, dus die sensor doet actief een post op je webserver, klopt dat? Dus data wordt gepushed naar je server in plaats van dat je een pull doet. Interessant.

Ik denk dat je idd beter bij het Python webservertje kunt blijven. Eventueel zou je uwsgi of iets dergelijks kunnen gebruiken als je meer requests gaat afhandelen. Nginx heeft in jou geval pas zijn als je buiten je eigen netwerk er bij moet een je b.v HTTPS zou willen hebben.
« Laatst bewerkt op: 2018/06/02, 08:18:40 door MKe »
Mijn blokkendoos blog: http://mke21.wordpress.com/

Re: Python webserver
« Reactie #9 Gepost op: 2018/06/02, 09:23:42 »
Dat snap ik niet.

Ik neem aan dat je Python gebruikt om die pinnen te benaderen. Dat heeft niets met een webserver te maken, toch?

Ja, dat heeft het wel.  :)
De webserver ontvangt de data van een remote sensor (via het web), en die zelfde webserver toont die ontvangen data dan op een OLED display (via I2C,  aangestuurd via de GPIO pinnen).
Ah, dus die sensor doet actief een post op je webserver, klopt dat? Dus data wordt gepushed naar je server in plaats van dat je een pull doet. Interessant.

Dat heb je helemaal juist.   ^-^
Miscere utile dulci. (Ter leering ende vermaeck)
http://henk.oegema.com  (On RaspberryPi2)
Registered linux user 520520.  In gebruik: Ubuntu  22.04.3 Hobby's: Radio Amateur callsign: PA2HO.  Interesses: Raspberry Pi & Arduino & Jetson Nano (voor AI & ML)