diff --git a/lib/py/src/server/THttpServer.py b/lib/py/src/server/THttpServer.py
index 6f92173..be54bab 100644
--- a/lib/py/src/server/THttpServer.py
+++ b/lib/py/src/server/THttpServer.py
@@ -73,7 +73,7 @@
         oprot = thttpserver.outputProtocolFactory.getProtocol(otrans)
         try:
           thttpserver.processor.process(iprot, oprot)
-        except ResponseException as exn:
+        except ResponseException, exn:
           exn.handler(self)
         else:
           self.send_response(200)
diff --git a/lib/py/src/server/TProcessPoolServer.py b/lib/py/src/server/TProcessPoolServer.py
index 86c4312..7a695a8 100644
--- a/lib/py/src/server/TProcessPoolServer.py
+++ b/lib/py/src/server/TProcessPoolServer.py
@@ -59,7 +59,7 @@
                 self.serveClient(client)
             except (KeyboardInterrupt, SystemExit):
                 return 0
-            except Exception as x:
+            except Exception, x:
                 logging.exception(x)
 
     def serveClient(self, client):
@@ -74,7 +74,7 @@
                 self.processor.process(iprot, oprot)
         except TTransportException, tx:
             pass
-        except Exception as x:
+        except Exception, x:
             logging.exception(x)
 
         itrans.close()
@@ -106,7 +106,7 @@
                 break
             except (SystemExit, KeyboardInterrupt):
                 break
-            except Exception as x:
+            except Exception, x:
                 logging.exception(x)
 
         self.isRunning.value = False
diff --git a/lib/py/src/server/TServer.py b/lib/py/src/server/TServer.py
index 97097cc..2f24842 100644
--- a/lib/py/src/server/TServer.py
+++ b/lib/py/src/server/TServer.py
@@ -84,7 +84,7 @@
           self.processor.process(iprot, oprot)
       except TTransport.TTransportException, tx:
         pass
-      except Exception as x:
+      except Exception, x:
         logging.exception(x)
 
       itrans.close()
@@ -108,7 +108,7 @@
         t.start()
       except KeyboardInterrupt:
         raise
-      except Exception as x:
+      except Exception, x:
         logging.exception(x)
 
   def handle(self, client):
@@ -121,7 +121,7 @@
         self.processor.process(iprot, oprot)
     except TTransport.TTransportException, tx:
       pass
-    except Exception as x:
+    except Exception, x:
       logging.exception(x)
 
     itrans.close()
@@ -161,7 +161,7 @@
         self.processor.process(iprot, oprot)
     except TTransport.TTransportException, tx:
       pass
-    except Exception as x:
+    except Exception, x:
       logging.exception(x)
 
     itrans.close()
@@ -174,7 +174,7 @@
         t = threading.Thread(target=self.serveThread)
         t.setDaemon(self.daemon)
         t.start()
-      except Exception as x:
+      except Exception, x:
         logging.exception(x)
 
     # Pump the socket for clients
@@ -183,7 +183,7 @@
       try:
         client = self.serverTransport.accept()
         self.clients.put(client)
-      except Exception as x:
+      except Exception, x:
         logging.exception(x)
 
 
@@ -208,7 +208,7 @@
     def try_close(file):
       try:
         file.close()
-      except IOError as e:
+      except IOError, e:
         logging.warning(e, exc_info=True)
 
     self.serverTransport.listen()
@@ -242,7 +242,7 @@
                 self.processor.process(iprot, oprot)
             except TTransport.TTransportException, tx:
               pass
-            except Exception as e:
+            except Exception, e:
               logging.exception(e)
               ecode = 1
           finally:
@@ -253,7 +253,7 @@
 
       except TTransport.TTransportException, tx:
         pass
-      except Exception as x:
+      except Exception, x:
         logging.exception(x)
 
   def collect_children(self):
diff --git a/lib/py/src/transport/TSSLSocket.py b/lib/py/src/transport/TSSLSocket.py
index 7bf28aa..0ab1502 100644
--- a/lib/py/src/transport/TSSLSocket.py
+++ b/lib/py/src/transport/TSSLSocket.py
@@ -86,13 +86,13 @@
         self.handle.settimeout(self._timeout)
         try:
           self.handle.connect(ip_port)
-        except socket.error as e:
+        except socket.error, e:
           if res is not res0[-1]:
             continue
           else:
             raise e
         break
-    except socket.error as e:
+    except socket.error, e:
       if self._unix_socket:
         message = 'Could not connect to secure socket %s: %s' \
                 % (self._unix_socket, e)
@@ -189,7 +189,7 @@
     try:
       client = ssl.wrap_socket(plain_client, certfile=self.certfile,
                       server_side=True, ssl_version=self.SSL_VERSION)
-    except ssl.SSLError as ssl_exc:
+    except ssl.SSLError, ssl_exc:
       # failed handshake/ssl wrap, close socket to client
       plain_client.close()
       # raise ssl_exc
