title: Python HTTP SSL Server slow to accept connections
body: <p>The following python code is used to create a HTTPS Server.</p>
  
  <pre><code>'''
  Created on 23/07/2014
  
  @author: o880732
  '''
  
  import sys
  import BaseHTTPServer
  import base64
  from multiprocessing import Process, Queue
  from httplib import HTTPSConnection
  import ssl
  import datetime
  
  class MyHttpEndpointHandler(BaseHTTPServer.BaseHTTPRequestHandler):
      def __init__(self, q, *args):
          self.q = q
          BaseHTTPServer.BaseHTTPRequestHandler.__init__(self, *args)
  
      def do_POST(self):
          self.send_response(200, 'OK')
          self.send_header('Server', 'Apache-Coyote/1.1')
          self.send_header('Content-type','text/xml')
          self.end_headers()
          # Extract and print the contents of the POST
          length = int(self.headers['Content-Length'])
          print "Length of content is " + str(length)
          post_data = self.rfile.read(length)
          self.q.put(post_data)
  
  
  class ServerEndpointHandler:
      def __init__(self,q,keyfile,certfile):
          self.q = q
          self.keyfile = keyfile
          self.certfile = certfile
  
      def setupEndpointHandler(self, queue):
          return lambda *args: MyHttpEndpointHandler(queue, *args)
  
      def handleEndpoint(self):
          print "Starting endpoint handler"
          handler = self.setupEndpointHandler(self.q)
          httpd = BaseHTTPServer.HTTPServer(('',8443), handler)
          httpd.socket = ssl.wrap_socket(httpd.socket, keyfile=self.keyfile, certfile = self.certfile, server_side=True)
          httpd.serve_forever()
  
  if __name__ == '__main__':
      q = Queue()
      print "trying to start endpoint"
      ep = ServerEndpointHandler(q, keyfile="~/certificates/server.key", certfile = "~/certificates/server.crt")
      t2 = Process(target=ep.handleEndpoint)
      t2.start()
      t2.join()
  </code></pre>
  
  <p>The issue I have is that on a RedhatLinux server the time to accept a connection is approximately 20sec, whereas the same code running under Windows7 the connection time is approximately 200msec.</p>
  
  <p>Both systems are running Python 2.6.6.</p>
  
  <p>The redhat release is 6.4 (Santiago)</p>
  
  <pre><code>Linux myserver.domain.com 2.6.32-358.18.1.el6.x86_64 #1 SMP Fri Aug 2 17:04:38 EDT 2013 x86_64 x86_64 x86_64 GNU/Linux
  </code></pre>
  
  <p>I have updated the openssl and python packages to the current release for Redhat.</p>
  
  <pre><code>Installed Packages
  openssl.x86_64                                                       1.0.1e-16.el6_5.14                                                        @rhel-x86_64-server-6
  python.x86_64                                                        2.6.6-52.el6                                                              @rhel-x86_64-server-6
  Available Packages
  openssl.i686                                                         1.0.1e-16.el6_5.14                                                        rhel-x86_64-server-6
  python.i686                                                          2.6.5-3.el6_0.2                                                           rhel-x86_64-server-6
  </code></pre>
  
  <p>I am presuming that the delay has something to do with protocol negotiation and am wondering where to look to solve this issue, or what else the issue may be.</p>
  
  <p>Any clues?</p>