예제 #1
0
    def fire_timers(self, when):
        t = self.timers
        heappop = heapq.heappop

        while t:
            next = t[0]

            exp = next[0]
            timer = next[1]

            if when < exp:
                break

            heappop(t)

            try:
                if timer.called:
                    self.timers_canceled -= 1
                else:
                    timer()
            except self.SYSTEM_EXCEPTIONS:
                raise
            except:
                self.squelch_timer_exception(timer, sys.exc_info())
                clear_sys_exc_info()
예제 #2
0
파일: hub.py 프로젝트: davidhadas/eventlet
    def fire_timers(self, when):
        t = self.timers
        heappop = heapq.heappop
        heappush = heapq.heappush

        while t:
            next = t[0]

            exp = next[0]
            timer = next[1]

            if when < exp:
                break

            heappop(t)

            try:
                if timer.called:
                    self.timers_canceled -= 1
                else:
                    # if idleness timer add active time to timeout
                    if timer.idleness:
                        exp += timer.greenlet.active_clock - timer.active_clock
                        timer.active_clock = timer.greenlet.active_clock
                        if when < exp:
                            heappush(exp, timer)
                            continue
                    timer()
            except self.SYSTEM_EXCEPTIONS:
                raise
            except:
                self.squelch_timer_exception(timer, sys.exc_info())
                clear_sys_exc_info()
예제 #3
0
    def fire_timers(self, when):
        t = self.timers
        heappop = heapq.heappop

        while t:
            next = t[0]

            exp = next[0]
            timer = next[1]

            if when < exp:
                break

            heappop(t)

            try:
                if timer.called:
                    self.timers_canceled -= 1
                else:
                    timer()
            except self.SYSTEM_EXCEPTIONS:
                raise
            except:
                self.squelch_timer_exception(timer, sys.exc_info())
                clear_sys_exc_info()
예제 #4
0
파일: hub.py 프로젝트: elrapha/eventlet
    def fire_timers(self, when):
        t = self.timers
        heappop = heapq.heappop

        while t:
            next = t[0]

            exp = next[0]
            timer = next[2]

            if when < exp:
                break

            heappop(t)

            try:
                try:
                    timer()
                except self.SYSTEM_EXCEPTIONS:
                    raise
                except:
                    self.squelch_timer_exception(timer, sys.exc_info())
                    sys.exc_clear()
            finally:
                self.timer_finished(timer)
예제 #5
0
파일: hub.py 프로젝트: CaesarLinsa/Eventlet
    def fire_timers(self, when):
        t = self.timers
        heappop = heapq.heappop

        while t:
            next = t[0]

            exp = next[0]
            timer = next[2]

            if when < exp:
                break

            heappop(t)

            try:
                try:
                    timer()
                except self.SYSTEM_EXCEPTIONS:
                    raise
                except:
                    self.squelch_timer_exception(timer, sys.exc_info())
                    clear_sys_exc_info()
            finally:
                self.timer_finished(timer)