2010-10-16 15 views

Odpowiedz

36

os.environ['CURRENT_VERSION_ID']

+6

To nie jest przestarzała. Uzyskanie obecnej wersji w ten sposób jest całkowicie w porządku. Nieaktualny klucz to APPLICATION_ID, a zamiast niego należy użyć funkcji get_application_id(). –

+2

Wynik jest podobny do 'my-version.383096322806301043', więc podziel na kropkę, jeśli chcesz tylko nazwę wersji. Sądzę, że druga część to sygnatura czasowa, sądząc po odpowiedzi Marco na tej stronie. – Pat

+1

Aby uzupełnić odpowiedź Pat, wypakowuję ją z tej linii major_ver, minor_ver = os.environ.get ('CURRENT_VERSION_ID'). Rsplit ('.', 1); – user1961

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

To składnia:

public static final SystemProperty applicationVersion 

główny numer wersji do aktualnie działającej wersji aplikacji plus znacznik czasu, w którym został wdrożony. Ma klucz "com.google.appengine.application.version".

Zobacz here

PS. Jedna zagadka wciąż pozostaje. Co oznacza znacznik czasu obok wersji i jak go odczytać?

EDYCJA: Oto klucz do tajemnicy.

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

Aby przeliczyć liczbę na końcu wersji na czas wdrożenia jako liczbę sekund od epoki, podziel wartość przez 2^28. Zobacz: http://code.google.com/p/googleappengine/issues/detail?id=5788 żądanie dotyczące funkcji GAE w tym zakresie. Właśnie przetestowałem wdrożoną wersję z tego tygodnia (czerwiec 2012 r.), Co dało prawidłowy znacznik czasu. – mbafford

+2

Tak więc w zasadzie 'Date UploadDate = new Date (Long.parseLong (applicationVersion.substring (applicationVersion.lastIndexOf (". ") + 1))/(2 << 27) * 1000);' – husayt

9

Dla Python (GAE SDK wydaniu: "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") 

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

+1

'v << 28' to trochę łatwiej, jeśli chcesz przesunąć o 28 bitów, a '2 ** 28' jest trochę łatwiejsze, jeśli chcesz zrobić pow. – lericson

+1

To da ci czas wersji. Zastosowanie '[0]' zamiast '[1]' w pierwszej linii da ci samą wersję. – asmeurer

Powiązane problemy