Explorar o código

[rdb] Fixes RDB support for gevent. Closes #1148

Ask Solem %!s(int64=12) %!d(string=hai) anos
pai
achega
3b41f2349c
Modificáronse 1 ficheiros con 4 adicións e 3 borrados
  1. 4 3
      celery/apps/worker.py

+ 4 - 3
celery/apps/worker.py

@@ -329,9 +329,10 @@ def install_rdb_handler(envvar='CELERY_RDBSIG',
     def rdb_handler(*args):
         """Signal handler setting a rdb breakpoint at the current frame."""
         with in_sighandler():
-            _, frame = args
-            from celery.contrib import rdb
-            rdb.set_trace(frame)
+            from celery.contrib.rdb import set_trace, _frame
+            # gevent does not pass standard signal handler args
+            frame = args[1] if args else _frame().f_back
+            set_trace(frame)
     if os.environ.get(envvar):
         platforms.signals[sig] = rdb_handler