2010-10-16 10 views

Respuesta

36

os.environ['CURRENT_VERSION_ID']

+6

Esto no está en desuso. Obtener la versión actual de esta manera está perfectamente bien. La clave obsoleta es APPLICATION_ID y se debe usar la función get_application_id() en su lugar. –

+2

El resultado es algo así como 'my-version.383096322806301043', así que divídelo si solo quiere el nombre de la versión. Supongo que la segunda parte es una marca de tiempo, a juzgar por la respuesta de Marco en esta página. – Pat

+1

Para complementar la respuesta de Pat, la extraigo de esta línea major_ver, minor_ver = os.environ.get ('CURRENT_VERSION_ID'). Rsplit ('.', 1); – user1961

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

Esta es la sintaxis:

public static final SystemProperty applicationVersion 

El número de versión principal de la versión actualmente en ejecución de la aplicación más un sello de tiempo en el que se desplegó. Tiene la clave, "com.google.appengine.application.version".

Ver here

PS. Un rompecabezas todavía permanece. ¿Qué significa la marca de tiempo al lado de la versión y cómo leerla?

EDITAR: Aquí está la clave del misterio.

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

Para convertir el número al final de la versión en el tiempo de implementación como número de segundos desde epoch, divida el valor entre 2^28. Consulte: http://code.google.com/p/googleappengine/issues/detail?id=5788 para obtener una solicitud de función de GAE al respecto. Acabo de probar en una versión implementada de esta semana (junio de 2012), y eso dio como resultado la marca de tiempo correcta. – mbafford

+2

Básicamente, 'Date UploadDate = new Date (Long.parseLong (applicationVersion.substring (applicationVersion.lastIndexOf (". ") + 1))/(2 << 27) * 1000);' – husayt

9

Para Python (GAE liberación del 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") 

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

+1

'v << 28' es un poco más fácil si quieres cambiar por 28 bits, y '2 ** 28' es un poco más fácil si quieres hacer pow. – lericson

+1

Eso le dará el tiempo de versión. Tomando '[0]' en vez de '[1]' en la primera línea le dará la versión en sí. – asmeurer

Cuestiones relacionadas