IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau/Web Python Discussion :

serveur http en python


Sujet :

Réseau/Web Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 70
    Par défaut serveur http en python
    bonjour à tous
    je suis en train de créer un serveur de page http en python sur une machine linux
    Le serveur fonctionne correctement; j'arrive à me connecter via le navigateur à mes pages écrites en python
    J'ai trouvé sur internet un tutoriel pour implémenter un compteur de visite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    #!/usr/bin/python3
    #-*- coding: utf8 -*-
    import cgitb
    cgitb.enable()
    try:
        f=open('compteur','r')
        nombrevisite=int(f.read())
        f.close()
    except Exception :
        nombrevisite=0
    nv=nombrevisite+1   
    f=open('compteur','w')
    f.write(str(nv))
    f.close()
     
    print("Content-type: text/html\r\n\r\n")
    print("""
    <!DOCTYPE HTML>
    <html lang="fr">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Mon serveur en python</title>
    </head>
    <body>
    INDEX<br>""")
     
    print (nv)
    print('Visites')
    print("""</body>""")
    Si je lance la page avec python directement depuis le terminal, tout se passe bien, le compteur s'incrémente et le fichier est mis à jour

    si je me connecte via un navigateur, j'ai une erreur sur
    f=open('compteur','w')
    j'ai une erreur d'ouverture du fichier en écriture: permission refusée

    d'ou peut venir cette différence de traitement?

    roland

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur en formation
    Inscrit en
    Juillet 2013
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en formation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 300
    Par défaut
    Pourrait-on avoir le code du serveur pour aller plus loin ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 70
    Par défaut
    merci de me répondre

    le code du serveur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #!/usr/bin/python3
    # -*- coding: utf8 -*-
    from http.server import HTTPServer,CGIHTTPRequestHandler
     
    # Serveur http de base 
    PORT = 8080
    httpd = HTTPServer(("",PORT), CGIHTTPRequestHandler)
    print("à l'écoute sur le port :", PORT)
    httpd.serve_forever()
    Si je charge une page python qui me renvoie du code html, ça marche normalement

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 753
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 753
    Par défaut
    j'ai une erreur d'ouverture du fichier en écriture: permission refusée
    C'est un problème de "droits": sous quel utilisateur est créé le process/threads qui ira écrire le fichier?
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 70
    Par défaut
    merci
    le serveur est lancé en root
    le fichier qui fait l'écriture est créé en root (lui il fonctionne, car appelé avec python 3 je n'ai pas d'erreur)

    roland

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 114
    Par défaut
    Bonjour

    Mon hypothèse :
    il y a une erreur dans le try/except. Donc le fichier n'est pas fermé.
    Donc quand le programme essaye de réouvrir le fichier en écriture, alors qu'il est toujours ouvert en lecture, il y a une erreur.

    -> afficher un message si on passe par l'except.

    Cordialement
    Emmanuel

Discussions similaires

  1. Sockets SSL ( serveur HTTPS )
    Par hexadecime dans le forum Réseau/Web
    Réponses: 4
    Dernier message: 19/10/2007, 18h02
  2. Serveur http en python
    Par Tz-Ba dans le forum Réseau/Web
    Réponses: 2
    Dernier message: 28/09/2006, 11h50
  3. Tester un serveur HTTP et un FTP
    Par fmcvieira dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 29/11/2005, 21h51
  4. [Net] Creation serveur HTTP en C++
    Par Yannos94 dans le forum C++
    Réponses: 13
    Dernier message: 14/11/2005, 12h05
  5. [Réseau] Headers vers un serveur http
    Par gexti dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 04/05/2004, 14h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo