2010-10-16 13 views

risposta

36

os.environ['CURRENT_VERSION_ID']

+6

Questo non è deprecato. Ottenere la versione corrente in questo modo è perfettamente a posto. La chiave deprecata è invece APPLICATION_ID e la funzione get_application_id() deve essere utilizzata. –

+2

Il risultato è qualcosa di simile a 'my-version.383096322806301043', in modo da dividere in punto, se si desidera solo il nome della versione. Immagino che la seconda parte sia un timestamp, a giudicare dalla risposta di Marco su questa pagina. – Pat

+1

Per completare la risposta di Pat ho estratto da questa linea major_ver, minor_ver = os.environ.get ('CURRENT_VERSION_ID') rsplit (, 1 '.'); – user1961

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

Questa è la sintassi:

public static final SystemProperty applicationVersion 

Il numero di versione principale per la versione attualmente in esecuzione dell'applicazione e un timestamp a cui è stato distribuito. Ha la chiave "com.google.appengine.application.version".

Vedi here

PS. Rimane ancora un puzzle. Cosa significa timestamp accanto alla versione e come leggerlo ??

EDIT: Ecco la chiave del mistero.

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

Per convertire il numero alla fine della versione nel tempo di distribuzione come numero di secondi dall'epoca, dividere il valore di 2^28. Vedere: http://code.google.com/p/googleappengine/issues/detail?id=5788 per una richiesta di funzionalità per GAE intorno a questo. Ho appena eseguito il test su una versione distribuita da questa settimana (giugno 2012) e il risultato è stato il timestamp corretto. – mbafford

+2

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

9

Per Python (rilascio 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") 

vedere il fonte http://groups.google.com/group/google-appengine-python/browse_thread/thread/f86010e7cf3c71b4

+1

v << 28' è un po 'più facile se si desidera spostare di 28 bit, e '2 ** 28' è un po' più facile se si vuole fare pow. – lericson

+1

Questo ti darà l'ora della versione. Prendere '[0]' invece di '[1]' nella prima riga ti darà la versione stessa. – asmeurer