Setting tag plcapi-5.4-2
[plcapi.git] / apache / plc.wsgi
index e6a7eb3..3e0d51c 100644 (file)
@@ -9,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'
@@ -28,6 +26,12 @@ def application(environ, start_response):
 </body></html>
 """
         else:
+            # Thomas Dreibholz <dreibh@simula.no>
+            # 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')
@@ -36,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),