2011-01-24 9 views
5

Powiel możliwe:
In Python, how can I test if I'm in Google App Engine SDK?W jaki sposób mój kod może stwierdzić, czy działa on na serwerze Google lub na lokalnym serwerze programistycznym?

Czy istnieje flaga środowisko, które pokaże, czy mój kod jest uruchomiony w produkcji lub na serwerze rozwoju?

Chciałbym móc użyć instrukcji if, aby zrobić coś innego w zależności od tej flagi.

(Szczególny przypadek. Znaki nowej linii w pliku tekstowym chcę czytać są traktowane odmiennie w obu środowiskach)

Odpowiedz

17
if os.environ.get('SERVER_SOFTWARE','').startswith('Development'): 
    DEBUG = True 
    logging.debug("[*] Debug info activated") 
+2

** ów droga ** - szkoda google nie daje prostą funncion tak :(Tylko jeden dbaj o SERVER_SOFTWARE w pakiecie google_appengine SDK, a znajdziesz ~ 8 połączeń wykonujących ten test – lukmdo

1

Na Google App Engine, ponieważ powiedziano mi, że nie można importować gniazdo prawdopodobnie możesz użyć tego faktu, aby określić, czy używasz GAE. To rozwiązanie nie jest w 100% niezawodne, ale powinno robić to, co chcesz. Umieść to w pliku settings.py.

try: 
    import socket 
except ImportError: 
    DEBUG = TRUE 

Dla każdego używającego Django, ale nie GAE, możesz użyć tego zamiast tego. Zmień "devserver" na dowolną nazwę hosta twojego serwera programistycznego.

import socket 
if socket.gethostname() == 'devserver': 
    DEBUG = TRUE 

Następnie gdziekolwiek trzeba sprawdzić zmienną DEBUG w kodzie

from django.conf import settings 

if settings.DEBUG: 
    newline = '\n' 
+0

Dlaczego downvotes? – jonescb

+0

Nie sądzę, że silnik aplikacji pozwala na importowanie gniazda. Możesz edytować swój wpis, aby błędne informacje nie były rozpowszechniane (Przegapiłem cię, ponieważ nie sądzę, że ludzie powinni głosować i nie podawać powodu). – mcotton

+0

Och dzięki, nie używam GAE, b ut to działa dla zwykłego Django. Nie zdawałem sobie sprawy, jak ograniczone było GAE. – jonescb

Powiązane problemy