
| Page 1 | |||
| Auteur | Message | ||
|---|---|---|---|
| 1 visiteur sur ce sujet (1 Anonyme) | |||
| Page 1 | |||
Krankkatze
|
# Posté le 08/06/2008 à 17:49:07 | ||
Ob-la-di, Ob-la-da![]()
|
Je voudrais vous faire part, après quatre mois de développement, d'un projet né d'un petit défi sur #sdz : un serveur HTTP en Python.
Je ne poste pas dans la catégorie "Vos projets" tout simplement parce que Papache n'a en soi rien de novateur. Il existe déjà des serveurs webs plus performants. Mais son intérêt réside dans son code. C'est pourquoi je poste ici. ![]() Le projet, commencé en février, dispose maintenant de nombreuses capacités :
Le travail actuel consiste à réécrire son code en Orienté Objet, parce que, comme vous l'avez probablement remarqué, le nombre d'arguments des fonctions comme celle générant les logs est un peu accablant. ![]() Je vous rassure, ce logo n'est que temporaire Une documentation expliquant comment installer et configurer Papache se trouve à cette adresse. Vous pouvez aussi utiliser le dépôt mercurial mis en place par delroth : Code : Bash
Vous pouvez également consulter le code sans le télécharger à l'aide du browser intègré à Trac. Enfin, vous pouvez tester Papache du côté client : il est bien souvent lancé sur le serveur SSH d'Alwaysdata : J'attends donc vos avis, vos conseils (parce qu'il y a un énorme boulot pour rendre le code un peu plus beau), et, ne disposant pas de serveur dédié, je serais très intéressé par l'expérience de quelqu'un hébergeant au quotidien son site avec Papache. Ah, et puisque j'avais le temps, j'ai fait une Boîte Utilisateur ![]() Une dernière chose : pour être tenu au courant des dernières nouveautés concernant Papache, venez sur #papache@irc.epiknet.org. Les cinq premiers auront l'autovoice § Merci !
Édité
le 08/07/2008 à 12:55:53
par Krankkatze
|
||
Artefact2
|
# Posté le 08/06/2008 à 17:59:00 | ||
Attention, je mords![]()
Ville : Reims |
Citation : Krankkatze
(parce qu'il y a un énorme boulot pour rendre le code un peu plus beau) T'en fais pas, du code python c'est toujours moche. Je connaissais déjà ( ) et c'est bien fait. C'est très éducatif.
|
||
anonyme
|
# Posté le 08/06/2008 à 18:11:11 | ||
|
|
J'ai regardé en vitesse, tout d'abord dans ton outil de vérification de configuration, utilises optparse plutot que de parser les options à la main comme tu le fais actuellement.
Ensuite, pourquoi utiliser un format de fichier de configuration fait à la main plutot que par exemple du JSON, du XML ou juste un fichier INI, qui sont tous les trois parsables extrèmement facilement en Python (pour le premier, un simple eval() dans un sandbox, pour le deuxième, ElementTree ou BeautifulSoup, et pour le troisième ConfigParser). Après, os.path.join est super pour rendre son code portable, ce que le tien n'est pas pour le moment (et ouais, les /, Windows aime pas). On a aussi des supers modules comme urlparse qui coupe une URL en morceaux, ou httplib qui te permettrais de traiter tes headers très facilement. Bref, j'ai pas regardé en détail, mais je vois déja ça de flagrant .
|
||
Krankkatze
|
# Posté le 08/06/2008 à 18:16:08 | ||
Ob-la-di, Ob-la-da![]()
|
Merci
![]() Je me pencherai sur la question du fichier de configuration. Quant à porter pour windows, je sais pas si j'ai grand intérêt à le faire : qui, de nos jours, a envie de faire un serveur sous windows en y installant Python ? |
||
Natim
|
# Posté le 08/06/2008 à 18:25:53 | ||
Apprendre à coder c'est coder
Ville : Beaucourt |
Citation : Krankkatze
Quant à porter pour windows, je sais pas si j'ai grand intérêt à le faire : qui, de nos jours, a envie de faire un serveur sous windows en y installant Python ? La question ne se pose pas en ces termes. Aujourd'hui quand on programme, on fait des programmes portables (point) Surtout que comme tu le fais en Python ce n'est pas bien dur. Je connais par exemple des gens qui programme en Django sous Windows (Oui ils ont bien du courage mais ça fonctionne). En gros, faire un truc portable c'est toujours une bonne idée. Je trouve ça sympa, as-tu un repos mercurial ou svn ? Fait attention, il me semble avoir entendu qu'il est interdit de lancer daemon sur alwaysdata. Si tu as besoin, je peux te passer un bout de dedibox (pour un petit prix :p) |
||
Krankkatze
|
# Posté le 08/06/2008 à 18:29:44 | ||
Ob-la-di, Ob-la-da![]()
|
J'ai pas de budget informatique
![]() Sinon, j'ai pas de svn, sinon ça voudrait dire que j'aurais un serv dédié et que je l'utiliserais avec Papache pour mon site § Par contre, j'édite le premier post pour ajouter #papache, où on peut se renseigner sur les dernières versions (pour se mettre à jour). |
||
K-Phoen
|
# Posté le 08/06/2008 à 20:23:39 | ||
Geek un jour, geek toujours !![]()
études : IUT Clermont 1 |
Citation : Krankkatze
J'ai pas de budget informatique ![]() Sinon, j'ai pas de svn, sinon ça voudrait dire que j'aurais un serv dédié Faux ![]() Beanstalk est ton ami Pour ce qui est de Papache, je compte bien suivre de près son développement de manière à parfaire mes connaissances en Python et serveur web, et pourquoi pas - un jour peut-être - contribuer d'une manière ou d'une autre à ce projet (on peut toujours rêver )P.S : Code : Python
pourquoi ne pas faire tout simplement while 1: ? Et oui, je sais, c'est un micro-détail |
||
Nytrix
|
# Posté le 08/06/2008 à 21:22:01 | ||
Nouilles au beurre na go RIP![]()
|
Salut,
Je tenais à te féliciter pour ce projet. Le server à l'air performant et bien codé. Mais je n'ai pas trop approfondi. SI tu veux de l'aide, n'hésites surtout pas à me MP, j'ai du temps libre en ce moment .
|
||
Krankkatze
|
# Posté le 08/06/2008 à 22:26:42 | ||
Ob-la-di, Ob-la-da![]()
|
K-Phoen, ça fait partie du code que j'ai codé quand je codais en Python comme en C
![]() Je vais m'empresser de le corriger. Sinon, sache que si tu veux participer, tu peux t'y mettre dès maintenant ![]() Tout s'organise sur #papache, donc venez en masse, il me reste 4 autovoices à distribuer §
Édité
le 08/06/2008 à 22:37:48
par Krankkatze
|
||
K-Phoen
|
# Posté le 08/06/2008 à 22:55:10 | ||
Geek un jour, geek toujours !![]()
études : IUT Clermont 1 |
Proposition très alléchante, mais je préfère être certain de ne pas ralentir l'avancement du projet avant de m'y joindre =)
En attendant, j'essaierai de passer de temps en temps sur le chan ![]() Edit : après avoir rapidement parcouru le code, et brièvement testé le serveur, j'ai repéré une petite erreur d'étourderie : dans les logs, le Referer indique la même info que le User-Agent. L'erreur doit très probablement venir de la fonction generer_log(), et plus précisément de la ligne 280. log_texte += "Referer: "+programme_client+"\n" devrait en fait être log_texte += "Referer: "+provenance+"\n" Ensuite, on pourrait remplacer les if chemin_log == "": par des if not chemin_log: (ça serait quand même un peu plus moins pas beau nan ? )Sur ce, je vais dodoter, et je commencerai à m'y mettre sérieusement demain (kewl, je vais enfin pouvoir mettre à profit la fin des cours ^^)
Édité
le 08/06/2008 à 23:38:35
par K-Phoen
|
||
Krankkatze
|
# Posté le 11/06/2008 à 13:52:50 | ||
Ob-la-di, Ob-la-da![]()
|
Merci pour tes conseils. Je suis en train (comme ceux qui sont sur #papache le savent :-°) de retravailler tout le code qui est truffé de ce genre de choses. Ah, et j'édite le premier post pour mettre le super logo
|
||
Nytrix
|
# Posté le 11/06/2008 à 16:14:52 | ||
Nouilles au beurre na go RIP![]()
|
Excellent le logo, j'accroche. Je passe bientôt sur IRC ne t'inquiètes pas
.
|
||
K-Phoen
|
# Posté le 12/06/2008 à 20:17:34 | ||
Geek un jour, geek toujours !![]()
études : IUT Clermont 1 |
Krankkatze et Papache m'ayant donné des idées, je me suis moi aussi mis au développement d'un serveur HTTP en Python
Ceux qui liront mon code le verront, le serveur et ses fonctionnalités sont hyper basiques, mais ça suffit largement pour apprendre les grandes lignes du fonctionnement du protocole HTTP, ce qui est le but premier de mon script. Cependant, il est plus que probable que de nouvelles fonctions soient implémentées dans les prochains jours ![]() J'ajouterai que si je poste mon script ici, ce n'est nullement pour concurrencer Papache, mais plutôt pour avoir l'avis et les conseils de développeurs Python plus expérimentés que moi (ce qui ne devrait pas être bien difficile à trouver étant donné que je code en python depuis ~ deux semaines )Donc voilà, pour ceux qui seraient prêts à perdre quelques instants à lire mon code, vous pourrez le trouver ici Merci d'avance, K-Phoen P.S : pour tester le serveur, éditez le fichier server.py pour mettre les valeurs qui correspondent à vos besoins pour le répertoire contenant les pages web (clé "home_www" dans le dico "config"), et le répertoire contenant le serveur (clé "install_path" dans le même dico). Ces valeur devraient disparaître dans les prochains jours, je compte revoir la gestion de la configuration ![]() Il suffit ensuite de faire python server.py pour lancer le serveur. |
||
kedare
|
# Posté le 13/06/2008 à 02:44:24 | ||
101010![]()
Ville : Neauphle le château |
|||
K-Phoen
|
# Posté le 13/06/2008 à 13:02:34 | ||
Geek un jour, geek toujours !![]()
études : IUT Clermont 1 |
En ce qui me concerne, CherryPy est sûrement plus complet et mieux codé que ce que j'ai fait. Donc la principale différence serait que mon code n'a qu'un but "éducatif" (je ne compte pas pour le moment l'utiliser en prod), alors que CherryPy pourrait être utilisé sur un serveur.
|
||
Krankkatze
|
# Posté le 15/06/2008 à 00:48:22 | ||
Ob-la-di, Ob-la-da![]()
|
J'ai mis en place un Trac pour remplacer tout le bazard avec la doc, les sources et tout le reste mal rangé. Il est accessible ici.
Sinon, la 1.0 est sortie en beta : le code a été réécrit plus proprement, la CGI repensée et quelques options de configuration ajoutées. |
||
Natim
|
# Posté le 16/06/2008 à 09:49:02 | ||
Apprendre à coder c'est coder
Ville : Beaucourt |
Ben le voilà le SVN que je demandais
![]() Merci
|
||
Florestan
|
# Posté le 19/06/2008 à 10:54:37 | ||
|
|
C'est une très bonne idée, mais j'ai un peu regardé ton code et ... cela n'utilise pas les fonctionnalité objets, et ce n'est quasiment pas structuré
C'est peut-être un choix, mais quand même faire du python sans faire de POO ? Tu auras beaucoup moins de mal à maintenir et a améliorer ton code si tu le structures en classe.
Édité
le 19/06/2008 à 10:56:39
par Florestan
|
||
Krankkatze
|
# Posté le 19/06/2008 à 21:42:51 | ||
Ob-la-di, Ob-la-da![]()
|
J'ai pas réussi à faire marcher le SVN moi
![]() Pour la POO, en fait, je vais re-revoir le code prochainement, mais je trouve pas qu'il y aie assez de fonctions, variables etc... pour aller m'embêter avec des self.machin ... |
||
Retour au forum "Autres langages" ou à la liste des forums
Le Site du Zéro vous proposera bientôt de nouveaux cours partant de Zéro dans d'autres domaines que l'informatique !

