Aller au contenu principal
Peef

← Articles

Comment développer une application sur Google App Engine avec le langage Python?

· Programmation

Google App Engine est un hébergeur d'applications web sur les serveurs de Google. Il supporte les applications écrites en Python, Java, PHP et Go. Pour ce qui est du langage Python, il supporte plusieurs frameworks à savoir CherryPy, Django, Webapp2 et autres frameworks que je ne citerai pas ici ! Ceux qui ne veulent pas utiliser de framework peuvent utiliser les modules du langage Python faits pour la programmation sur internet. Je cite ici les modules cgi, wsgiref etc.

Développer une application web avec webapp2 est simple pour moi. Personnellement, j'utilise ce framework à cause de sa simplicité par rapport à django, mais tout est uniquement une question de goût. D'autres trouveront django plus facile, donc il n'y a pas à s'en faire ! Les modules de webapp2 que j'utilise principalement sont webapp2.RequestHandler() car il me permet de faire des requêtes du type get() et post() sur le serveur et webapp2.WSGIApplication() qui, quant à lui, permet d'afficher les pages web en fonction des urls. Les autres je ne les utilise pas encore !

Quelle est ma méthode à moi pour développer sur Google App Engine ?

Elle est toute simple ! Dans le repertoire de mon application je créé 2 fichiers et 2 dossiers.

Commençons par les fichiers !

Le premier fichier est app.yaml. Voici comme il se présente :

application: nom_de_l'application
version: 1
runtime: python27
api_version: 1
threadsafe: yes

handlers:
- url: /static
  static_dir: static
- url: .*
  script: main.app

Ce fichier sert de relais entre le serveur et les dossiers de l'application. Vous pouvez voir ici la version de l'application, la version du langage de programmation ici python27 c'est-à-dire Python 2.7, les chemins (handlers). Concernant les handlers, le premier concerne le dossier static et le second le fichier main.py qui exécutera les adresses contenus dans l'objet app.

Pour ce qui est du fichier main.py qui est le deuxième fichier du répertoire de mon application, c'est lui le controlleur, bref le fichier principal. C'est dans ce fichier qu'il y'a l'objet app.

app est en fait une liste qui contient toutes les urls de l'application. Elle est basé sur le WSGI, raison pour laquelle elle est sous cette forme :

app = webapp2.WSGIApplication([
    ('url', classe_qui_genere_l_url),
    ('url2', classe_qui_genere_l_url2)
], debug=True)

Maintenant les dossiers

Le premier dossier dont je vais parlé est le dossier static. Ce dossier contient comme son nom l'indique, tous ce qui est statique comme les photos, les PDF et autres fichiers.

L'autre dossier est le centre de l'application, il contient tous les modèles. Je l'ai nommé lib. Dans ce dossier, tous les modules que j'ai écris en Python y sont présents.

Je vais en profité pour apporter un éclaircissement. J'ai décidé d'écrire tous mes codes html dans mes fichiers python au lieu d'utiliser les templates comme les autres ! Une fois de plus, tout est une question de goût. Il y'a beaucoup de développeurs qui trouvent cette méthode obsolète mais moi je la préfère ! D'abord, en tant que débutant, cette méthode me permet d'être plus organisé dans la rédaction de mes codes. Ensuite, elle me permet d'utiliser facilement le langage Python pour la gestion de mon application. Par exemple, pour corriger une erreur, je suis pas obligé de parcourir plusieurs fichiers au même moment. Je sais dans quel fichier mon erreur se trouve donc je parcoure uniquement ce fichier. Pour être plus explicite, cette méthode me permet de reconnaître plus facilement que telle requête est gérée par tel code et vice versa ! Donc, je conseil à tous les débutant d'utiliser cette méthode avec de se lancer dans les moteurs de templates comme jinja2.

Dans ce dossier lib, j'ai trouvé judicieux de créer le module gweb.py qui sera le fichier carrefour. Dans ce module je regroupe toutes les lignes de code principal qui gèreront les pages de l'application. C'est à ce niveau que j'importe les modules de google app engine que j'utiliserai, parmi lesquelles webapp.

Comment afficher une page web ?

Voici la démarche à suivre pour afficher « bonjour tout le monde ! »

Dans le dossier lib, étant donné que j'ai déjà écris le module gweb.py, je cré maintenant le fichier bonjour.py. Voici le contenu de ce fichier :

from lib.gweb import *

class Bonjour(webapp2.RequestHandler):
    def get(self):
        self.response.write('Bonjour tout le monde!')

Je rentre maintenant dans main.py et j'écris :

from lib.bonjour import *

app = webapp2.WSGIApplication([
    ('/', Bonjour)
], debug=True)

Maintenant, il ne reste plus qu'à exécuter l'application et « Bonjour tout le monde ! » s'affiche !

Pour en savoir plus, rendez-vous sur https://cloud.google.com/appengine/docs



Articles liés

Newsletter

Chaque mois : un cas réel de migration, d'intégration ou de production Odoo. Ce que j'ai fait, ce qui a cassé, et pourquoi.

Aucun spam. Désinscription en un clic.

À propos de l'auteur

Je suis Nasser, développeur Odoo depuis 2016. Je travaille sur les intégrations et les migrations Odoo, avec le stock et la production. Certifié Odoo, membre de l'OCA, basé en Allemagne.

Ici, pas de théorie : les articles et les vidéos sortent de missions réelles, avec le code, les erreurs et ce que je ferais autrement la prochaine fois.

Voir la chaîne YouTube →