Ja, es geht. Ich hab eine Lösung gebastelt, die einige Informationen zusammen trägt:
https://gist.github.com/1186632
Im Prinzip ist es das:
Code: Alles auswählen
if __name__.startswith('_mod_wsgi_'):
# mod_wsgi
elif __name__.startswith('_mp_'):
# mod_python
elif __name__ == "__main__": # fast_CGI or normal CGI
if "CGI" in os.environ.get("GATEWAY_INTERFACE", ""):
# normales CGI
else:
# kann dann nur fast_CGI oder was anderes sein
Die Frage ist, wie man besser fast_CGI erkennen kann und was man sonst noch unterscheiden könnte? Ideen?
Ich hab lokal mit apache2 die Varianten mod_python, fastCGI, mod_wsgi und cgi getestet. Mittels mod_rewrite und einer .htaccess, die im Prinzip so aussieht:
Code: Alles auswählen
# libapache2-mod-wsgi
#AddHandler wsgi-script .py
# Old libapache2-mod-fastcgi Apache module:
#AddHandler fastcgi-script .py
# New libapache2-mod-fcgid Apache module:
#AddHandler fcgid-script .py
# libapache2-mod-python
#AddHandler mod_python .py
#PythonHandler python_test
#PythonDebug on
# normal CGI
#AddHandler cgi-script .py
#-----------------------------------------------------------------------
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ python_test.py/$1 [QSA,L]
Jeweils ein Handler Einkommentieren und das Skript "aufrufen"...
Wenn das Skript läuft, werden einige Informationen angezeit, z.B.:
* Python Version, uname, PID, UID+Userdaten, IP und Domain
* Apachemodule (*.load Dateien in '/etc/apache2/mods-enabled')
* Das WSGI/mod_python Environment und das normale os.environ
* Alle gefunden Python Module aus sys.path (Basiert auf ein ganz altes Skript)
Es wird eine Log Datei erstellt, da kann man rein sehen, falls was nicht läuft...
EDIT: Neuste Version hier:
https://github.com/jedie/python-code-sn ... n_web_test