BaseHTTPServer threading using SocketServer.ThreadingMixIn

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Tortelini

    #1

    BaseHTTPServer threading using SocketServer.ThreadingMixIn

    I am making custom web server using HTTPServer and want to be able to
    access it simultaneously from different computers. To achieve
    multithreading, I have been experimenting with ThreadingMixIn from
    SocketServer, but it doesn't seem to work, when I freeze code in one
    instance it seems to be frozen in second one too (I experimented with
    time.sleep and while 1 loop). I am using python 2.4 on Windows XP. Does
    anyone have any suggestions? Do I need to create HTTPRequestHand ler
    class anything different from ordinary?

  • Paul Rubin

    #2
    Re: BaseHTTPServer threading using SocketServer.Th readingMixIn

    "Tortelini" <leo.hatvani@gm ail.com> writes:[color=blue]
    > I am making custom web server using HTTPServer and want to be able to
    > access it simultaneously from different computers. To achieve
    > multithreading, I have been experimenting with ThreadingMixIn from
    > SocketServer, but it doesn't seem to work,[/color]

    One common error is to define your class as something like:

    class myServer(HTTPSe rver, ThreadingMixin) : ...

    You have to put ThreadingMixin first, since it overrides methods of
    TCPServer:

    class myServer(Thread ingMixin, HTTPServer): ...

    Comment

    • Tortelini

      #3
      Re: BaseHTTPServer threading using SocketServer.Th readingMixIn

      It's not that, here is definition that I use:
      class myWebServer(Soc ketServer.Threa dingMixIn,
      BaseHTTPServer. HTTPServer):
      pass

      code that runs server:
      server = myWebServer(('' , 80), myWebHTTPHandle r)
      LOG("Web Server starting")
      server.serve_fo rever()

      and here is shortened version of myWebHTTPHandle r:
      class myWebHTTPHandle r(BaseHTTPServe r.BaseHTTPReque stHandler):
      sys_version=""
      server_version= versionString

      def log_request(sel f, code='-', size='-'):
      pass

      def do_GET(self):
      my GET code...

      def do_POST(self):
      my POST code...

      Comment

      Working...