2011-02-22 5 views
7

Diciamo Ho uno script di base di Python, test.py:Determinare se script Python è in esecuzione in locale o come CGI

#!/usr/bin/python 

print "Content-type: text/html\n\n" 
print "<html>Hello world!</html>" 

Come si potrebbe determinare se lo script viene eseguito a livello locale, ad esempio:

python test.py 

Oppure tramite un browser Web, ad es. visita:

http://example.com/test.py 

Questo non sembra essere risolto in the documentation for the cgi module. Ho pensato che potrebbe esserci una differenza nel risultato di cgi.FieldStorage() ma non sembra esserlo.

L'unico modo che posso pensare di farlo è la seguente:

#!/usr/bin/python 
import os 

print "Content-type: text/html\n\n" 
print "<html>Hello world!</html>" 

if 'REQUEST_METHOD' in os.environ : 
    print "This is a webpage" 
else : 
    print "This is not a webpage" 

È questo il metodo migliore e/o più ideale? Perché perché no?

risposta

6

Sembra il metodo migliore. Non c'è molta differenza tra l'essere chiamato dalla riga di comando e l'avvio dal server Web che segue una richiesta HTTP, ad eccezione delle variabili di ambiente CGI, come REQUEST_METHOD.