X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=apache%2Fplc.wsgi;h=3e0d51c6e7be5fa14b93a51470a10b4946642651;hb=e70e20fdbececafef842ec7b330fd48db42e614e;hp=840fc061f7d51f721deb8020825776682165f6d3;hpb=1be54e32324eeecd228c620bdcc80e84518864a0;p=plcapi.git diff --git a/apache/plc.wsgi b/apache/plc.wsgi index 840fc06..3e0d51c 100644 --- a/apache/plc.wsgi +++ b/apache/plc.wsgi @@ -1,3 +1,4 @@ +# -*- python -*- # # Apache mod_wsgi python interface # @@ -8,11 +9,9 @@ import sys sys.path.append('/usr/share/plc_api') sys.stdout = sys.stderr import traceback -from PLC.Debug import log +from PLC.Logger import logger from PLC.API import PLCAPI -api = PLCAPI() - def application(environ, start_response): try: status = '200 OK' @@ -27,6 +26,12 @@ def application(environ, start_response): """ else: + # Thomas Dreibholz + # Note that this function is called within multiple threads! + # "api" MUST be a local variable instead of a global one. + # Otherwise, this causes concurrent accesses to the same + # object within different threads! + api = PLCAPI() api.environ = environ content_type = 'text/xml' ip = environ.get('REMOTE_ADDR') @@ -35,11 +40,11 @@ def application(environ, start_response): # Shut down database connection, otherwise up to MaxClients DB # connections will remain open. api.db.close() - except Exception, err: + except Exception as err: status = '500 Internal Server Error' content_type = 'text/html' output = 'Internal Server Error' - print >> log, err, traceback.format_exc() + logger.exception("INTERNAL ERROR !!") # Write response response_headers = [('Content-type', '%s' % content_type),