Procházet zdrojové kódy

Eventlet/Gevent Pool: Fixes 100% CPU usage. Closes #3336

Ask Solem před 8 roky
rodič
revize
88c99585fc
2 změnil soubory, kde provedl 4 přidání a 4 odebrání
  1. 2 2
      celery/concurrency/eventlet.py
  2. 2 2
      celery/concurrency/gevent.py

+ 2 - 2
celery/concurrency/eventlet.py

@@ -4,7 +4,7 @@ from __future__ import absolute_import, unicode_literals
 
 import sys
 
-from time import time
+from kombu.five import monotonic
 
 __all__ = ['TaskPool']
 
@@ -49,7 +49,7 @@ class Timer(_timer.Timer):
         self._queue = set()
 
     def _enter(self, eta, priority, entry):
-        secs = max(eta - time(), 0)
+        secs = max(eta - monotonic(), 0)
         g = self._spawn_after(secs, entry)
         self._queue.add(g)
         g.link(self._entry_exit, entry)

+ 2 - 2
celery/concurrency/gevent.py

@@ -2,7 +2,6 @@
 """Gevent execution pool."""
 from __future__ import absolute_import, unicode_literals
 
-from time import time
 
 try:
     from gevent import Timeout
@@ -10,6 +9,7 @@ except ImportError:  # pragma: no cover
     Timeout = None  # noqa
 
 from kombu.async import timer as _timer
+from kombu.five import monotonic
 
 from .base import apply_target, BasePool
 
@@ -43,7 +43,7 @@ class Timer(_timer.Timer):
         self._queue = set()
 
     def _enter(self, eta, priority, entry):
-        secs = max(eta - time(), 0)
+        secs = max(eta - monotonic(), 0)
         g = self._Greenlet.spawn_later(secs, entry)
         self._queue.add(g)
         g.link(self._entry_exit)