Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 20/02/2012, à 22:39

Tuxmouraille

gCCNA: besoin d'un coup de main

Bonjour,
Je suis en train de passer les certificats Cisco: CCNA. J'ai récupéré les cours hors ligne qui sont au format html/css/flash. Le problème c'est qu'ils ne sont accessibles directement avec une URL en file:/// que sur Windows, pour les autres systèmes il faut les mettre dans un serveur web.

Comme je n'ai pas envie d'installer un serveur web sur mon PC j'ai développé un application en Python qui en utilisant la bibliothèque SimpleHTTPD permet de les rendre disponibles uniquement lorsque j'en ai besoin, à l'adresse http://localhost:8000/

Les scriptes sont dans le dossier gCCNA à cette adresse : https://github.com/tuxmouraille/MesApps .

Je fais appel à aux bonnes volontés Pythienne qui pourrait m'aider à corriger les bugs.
Après avoir fermé l'application je suis obligé d'attendre plusieurs minutes avant de pourvoir relancer l'application si non j'ai l'erreur

started with pid 5961
serving at port 8000
Traceback (most recent call last):
  File "/home/lahire/.local/lib/gCCNA/httpd.py", line 55, in <module>
    daemon_runner.do_action()
  File "/usr/lib/pymodules/python2.7/daemon/runner.py", line 186, in do_action
    func(self)
  File "/usr/lib/pymodules/python2.7/daemon/runner.py", line 131, in _start
    self.app.run()
  File "/home/lahire/.local/lib/gCCNA/httpd.py", line 49, in run
    self.httpd = SocketServer.TCPServer(("", SERV_PORT), Handler)
  File "/usr/lib/python2.7/SocketServer.py", line 408, in __init__
    self.server_bind()
  File "/usr/lib/python2.7/SocketServer.py", line 419, in server_bind
    self.socket.bind(self.server_address)
  File "/usr/lib/python2.7/socket.py", line 224, in meth
    return getattr(self._sock,name)(*args)
socket.error: [Errno 98] Address already in use

Cette erreur vient du script httpd.py. Actuellement j'utilise la bibliothèque python-deamon qui gère l'exécution du serveur SimpleHTTPD comme un service. Je souhaiterai plutôt lancer le serveur depuis le script principale dans un second thread, mais je ne sais pas faire.
Ou bien si le scripte principale pouvait attendre la libération du socket avant de se fermer, je ne sais pas faire non plus.
Je ne suis pas non plus satisfait de la méthode d'exécution de httpd.py, mais je sais pas faire mieux que:

HTTPD_START = os.path.join(SCRIPT_DIR, 'httpd.py start')
os.system(HTTPD_START)

Toutes les aides sont les bien venues.

[EDIT]J'ai eu un problème d'upload vers Github, donc les fichiers de sont pas disponibles.[/EDIT]

Dernière modification par Tuxmouraille (Le 22/02/2012, à 20:59)


Le support d'Optimus pour Linux.
Ubuntu 18.04 64 bits, portable ASUS N53SN-SZ161V, Intel® Core™ i5-2410M @ 2.30GHz, 8080MB SODIM Ram, NVIDIA® GeForce™ GT 550M

Hors ligne

#2 Le 12/05/2012, à 10:10

Tuxmouraille

Re : gCCNA: besoin d'un coup de main

Bonjour,
Après de nombreuses recherches il semble que ce soit très difficile de faire du multitâches avec la bibliothèque SimpleHTTPD.
Il semblerait que se soit la libération du socket de connexion (localhost:port) qui n'est pas assez rapide.
Je n'ai pas trouvé de solution, mais je l'ai contourné. J'utilise maintenant un socket aléatoire: localhost:<port libre aléatoire>


Le support d'Optimus pour Linux.
Ubuntu 18.04 64 bits, portable ASUS N53SN-SZ161V, Intel® Core™ i5-2410M @ 2.30GHz, 8080MB SODIM Ram, NVIDIA® GeForce™ GT 550M

Hors ligne