[issue21035] Python's HTTP server implementations hangs after 16.343 requests on MacOSX

Parto Chobeiry report at bugs.python.org
Sun Mar 23 17:58:12 CET 2014


Parto Chobeiry added the comment:

I think there is no need for print() -- it is hanging <<HERE>>:

 def _eintr_retry(func, *args):
     """restart a system call interrupted by EINTR"""
     while True:
         try:
             return func(*args) <<HERE>>
         except OSError as e:
             if e.errno != errno.EINTR:
                 raise

This gets called <<HERE>>:

    def serve_forever(self, poll_interval=0.5):
        """Handle one request at a time until shutdown.

        Polls for shutdown every poll_interval seconds. Ignores
        self.timeout. If you need to do periodic tasks, do them in
        another thread.
        """
        self.__is_shut_down.clear()
        try:
            while not self.__shutdown_request:
                # XXX: Consider using another file descriptor or
                # connecting to the socket to wake this up instead of
                # polling. Polling reduces our responsiveness to a
                # shutdown request and wastes cpu at all other times.
                r, w, e = _eintr_retry(select.select, [self], [], [],
                                       poll_interval) <<HERE>>
                if self in r:
                    self._handle_request_noblock()

                self.service_actions()
        finally:
            self.__shutdown_request = False
            self.__is_shut_down.set()

So, the select.select is blocking or it does not find anything to "select" on... Did I conclude that correctly?

----------

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue21035>
_______________________________________


More information about the Python-bugs-list mailing list