2010-10-16 4 views

Répondre

36

os.environ['CURRENT_VERSION_ID']

+6

Ce n'est pas dépréciée. Obtenir la version actuelle de cette façon est parfaitement bien. La clé obsolète est APPLICATION_ID et la fonction get_application_id() doit être utilisée à la place. –

+2

Le résultat est quelque chose comme 'my-version.383096322806301043', donc divisé sur le point si vous voulez juste le nom de la version. Je suppose que la deuxième partie est un horodatage, à en juger par la réponse de Marco sur cette page. – Pat

+1

Pour compléter la réponse de Pat, je l'extrait de cette ligne major_ver, minor_ver = os.environ.get ('CURRENT_VERSION_ID'). Rsplit ('.', 1); – user1961

17
String version = SystemProperty.version.get(); 
String applicationVersion = SystemProperty.applicationVersion.get(); 

Voici la syntaxe:

public static final SystemProperty applicationVersion 

Le numéro de version pour la version en cours d'exécution de l'application plus un horodatage au cours de laquelle il a été déployé. A la clé, "com.google.appengine.application.version".

Voir here

PS. Un puzzle reste encore. Que signifie timestamp à côté de la version et comment le lire?

EDIT: Voici la clé du mystère.

Date UploadDate = new Date(Long.parseLong(
    applicationVersion.substring(applicationVersion.lastIndexOf(‌​".")+1)) 
/(2 << 27) * 1000); 
+2

Pour convertir le nombre à la fin de la version dans le temps de déploiement en nombre de secondes depuis epoch, divisez la valeur par 2^28. Voir: http://code.google.com/p/googleappengine/issues/detail?id=5788 pour une demande de fonctionnalité pour GAE autour de cela. Je viens de tester sur une version déployée à partir de cette semaine (juin 2012), et cela a abouti à l'horodatage correct. – mbafford

+2

Donc, fondamentalement 'Date UploadDate = nouvelle Date (Long.parseLong (applicationVersion.substring (applicationVersion.lastIndexOf (". ") + 1))/(2 << 27) * 1000);' – husayt

9

Pour Python (version GAE SDK: "1.4.2")

version_id = self.request.environ["CURRENT_VERSION_ID"].split('.')[1] 

timestamp = long(version_id)/pow(2,28) 

version = datetime.datetime.fromtimestamp(timestamp).strftime("%d/%m/%y %X") 

Voir http://groups.google.com/group/google-appengine-python/browse_thread/thread/f86010e7cf3c71b4

+1

'v << 28' est un peu plus facile si vous voulez changer de 28 bits, et '2 ** 28' est un peu plus facile si vous voulez faire pow. – lericson

+1

Cela vous donnera l'heure de la version. Prendre '[0]' au lieu de '[1]' dans la première ligne vous donnera la version elle-même. – asmeurer

Questions connexes