Python : SimpleHTTPServer et BaseHTTPServer

Python est le langage de prédilection du Raspberry Pi

Modérateurs : Francois, Manfraid

Répondre
golum
Messages : 34
Enregistré le : mer. 10 août 2016 01:11

Python : SimpleHTTPServer et BaseHTTPServer

Message par golum » sam. 22 juil. 2017 00:00

Salut à tous !
Sur mon RPI3, je souhaite utiliser le fameux 'SimpleHTTPServer' de Python mais j'ai quelques soucis pour ce que je veux faire.
J'ai testé la commande

Code : Tout sélectionner

python -m SimpleHTTPServer 8000 
avec un script index.html à l'endroit où je lançais la commande.

Sur mon pc distant, j'ai accédé à mon RPI3 sur le port 8000 par : <IP RPI3>:8000
et là, ma page HTML s'affichait bien.
Jusqu'ici, tout va bien.

Par la suite, j'ai voulu utiliser BaseHTTPServer pour mes besoins.
Voici un script python (test.py) assez simple pour ce forum...

Code : Tout sélectionner

#! /usr/bin/python
import BaseHTTPServer
from SimpleHTTPServer import SimpleHTTPRequestHandler

class RobotHandler(SimpleHTTPRequestHandler):

        def do_GET(self):
                self.send_response(200,'OK')
                print "ok sur " + self.path

print('http server is starting...')
HandlerClass = RobotHandler
ServerClass=BaseHTTPServer.HTTPServer
Protocol="HTTP/1.0"
server_address= ("", 8000)
HandlerClass.protocol_version = Protocol
httpd = ServerClass(server_address, HandlerClass)
infos_serveur = httpd.socket.getsockname()
print "Ready on address ", infos_serveur[0], " - port", infos_serveur[1]
httpd.serve_forever()
Je lance le script par

Code : Tout sélectionner

sudo python test.py
Et voici ma page index.html placé dans le même répertoire que test.py

Code : Tout sélectionner

<html>
<body>
Hello
</body>
</html>
A partir de la page web de mon laptop <IP RPI3>:8000, je vois bien l'affichage du print (ok sur ...) mais ma page index.html ne s'affiche pas du tout.

Je crois que j'ai manqué quelque chose...

Est-ce quelqu'un a une idée sur ce qui ne va pas ?

Merci d'avance.

Avatar du membre
Manfraid
Modérateur
Messages : 1392
Enregistré le : ven. 3 oct. 2014 14:50
Contact :

Re: Python : SimpleHTTPServer et BaseHTTPServer

Message par Manfraid » dim. 23 juil. 2017 20:43

Salut,

juste une petite question comme ça as-tu un ok sur la page affichée
NAS : DIY OS Debian: DD250Go + 3x2To + 6To
Raspberry pi : 2B OS : Raspbian
Se tromper est humain, Vraiment foutre la merde nécessite le mot de passe de root.

golum
Messages : 34
Enregistré le : mer. 10 août 2016 01:11

Re: Python : SimpleHTTPServer et BaseHTTPServer

Message par golum » dim. 30 juil. 2017 19:02

Salut !
Désolé pour la réponse tardive ...
Non, je n'ai même pas de 'ok'.

Avatar du membre
Manfraid
Modérateur
Messages : 1392
Enregistré le : ven. 3 oct. 2014 14:50
Contact :

Re: Python : SimpleHTTPServer et BaseHTTPServer

Message par Manfraid » dim. 30 juil. 2017 20:47

salut, dès que j'ai un peu de temps je regarde la en ce moment je suis très peu disponible
NAS : DIY OS Debian: DD250Go + 3x2To + 6To
Raspberry pi : 2B OS : Raspbian
Se tromper est humain, Vraiment foutre la merde nécessite le mot de passe de root.

Bud Spencer
Raspinaute
Messages : 393
Enregistré le : lun. 15 août 2016 21:38

Re: Python : SimpleHTTPServer et BaseHTTPServer

Message par Bud Spencer » dim. 17 sept. 2017 12:19

Je suis tombé par hasard sur cette demande (faite très certainement par le même PO) sur un autre forum et je me suis dit que j’avais déjà vu ça quelques part …

Etonnant que personne n’ai fait de proposition pour une question aussi simple sur un forum ou la notion de programmation est quasiment dédié au langage python. Même pour moi qui ne pratique plus trop ce langage depuis très longtemps et qui ne l’affectionne pas particulièrement, ça m’a pris tout au plus un petit ¼ d’heure pour écrire un exemple fonctionnel.

Voilà donc un petit bout de code python 3 qui permet de créer un serveur de page web tout simple.
simplepyweb.png
simplepyweb.png (35.57 Kio) Vu 659 fois
Il renvoi simplement la page http://adresseserveur:port/page.html passée en paramètre. Si il ni a pas de page dans l’url (http://adresseserveur:port), il renvois par défaut la page index.html. J’ai fait simple et les fichiers html doivent se trouver dans le dir du script .py mais c’est facilement modifiable pour définir un répertoire d’emplacement spécifique.

J’attire votre attention sur le fait que ces type de serveur web sont très simpliste. Il ne font que distribuer des fichiers html qui n’ont aucun dynamisme. Si on veut par exemple afficher le contenu d’une variable issue du script python, il faut le faire en générant la page depuis ce script ou alors on a tout intérêt à utiliser un frmk qui permet de faire le rendering en utilisant des templates html.
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

Répondre

Retourner vers « Python »