Utiliser l'API Modules

L'API Modules propose des fonctions qui renvoient des informations sur l'environnement d'exploitation actuel (module, version et instance).

Elle comporte également des fonctions qui servent à récupérer l'adresse d'un module, d'une version ou d'une instance. Cela permet à une application d'envoyer des requêtes d'une instance à une autre dans les environnements de développement et de production.

Vous devez importer le module google.appengine.api.modules à partir du SDK.

from google.appengine.api import modules

L'exemple de code suivant montre comment obtenir le nom du module et l'ID d'instance pour une requête :

module = modules.get_current_module_name()
instance_id = modules.get_current_instance_id()
self.response.write(
    'module_id={}&instance_id={}'.format(module, instance_id))

L'ID d'instance d'un module avec scaling automatique est renvoyé sous forme de valeur unique encodée en base64, par exemple e4b565394caa.

Vous pouvez communiquer avec les modules d'une même application en récupérant le nom d'hôte du module cible :

backend_hostname = modules.get_hostname(module='my-backend')
url = "http://{}/".format(backend_hostname)
try:
    result = urllib2.urlopen(url).read()
    self.response.write('Got response {}'.format(result))
except urllib2.URLError:
    pass

Vous pouvez également utiliser le service de récupération d'URL.