获得“意外提升:BdbQuit()”

cha*_*han 8 python celery

追溯:

[2014-09-16 17:27:04,912: ERROR/MainProcess] Task my_project.tasks.get_items[8481cd42-ec19-441f-b32d-03280570053c] raised unexpected: BdbQuit()
Traceback (most recent call last):
  File "/vagrant/venv/local/lib/python2.7/site-packages/celery/app/trace.py", line 240, in trace_task
    R = retval = fun(*args, **kwargs)
  File "/vagrant/venv/local/lib/python2.7/site-packages/celery/app/trace.py", line 437, in __protected_call__
    return self.run(*args, **kwargs)
  File "/vagrant/my_project/my_app/tasks.py", line 21, in get_items
    logging.debug('{} {}'.format(settings.API_KEY, settings.API_SECRET))
  File "/vagrant/my_project/my_app/tasks.py", line 21, in get_items
    logging.debug('{} {}'.format(settings.API_KEY, settings.API_SECRET))
  File "/usr/lib/python2.7/bdb.py", line 49, in trace_dispatch
    return self.dispatch_line(frame)
  File "/usr/lib/python2.7/bdb.py", line 68, in dispatch_line
    if self.quitting: raise BdbQuit
BdbQuit
Run Code Online (Sandbox Code Playgroud)

我检查了这个问题并尝试使用celery.contrib.rdb但在执行 telnet 后我被发送到:

vagrant@vagrant-ubuntu-trusty-64:~$ telnet localhost 6900
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
--Call--
> /usr/lib/python2.7/contextlib.py(21)__exit__()
-> def __exit__(self, type, value, traceback):
(Pdb) l
 16             try:
 17                 return self.gen.next()
 18             except StopIteration:
 19                 raise RuntimeError("generator didn't yield")
 20     
 21  ->     def __exit__(self, type, value, traceback):
 22             if type is None:
 23                 try:
 24                     self.gen.next()
 25                 except StopIteration:
 26                     return
(Pdb)
Run Code Online (Sandbox Code Playgroud)

代码是:

from __future__ import absolute_import
from celery import shared_task
from . import utils
from . import status
import redis
import pickle
import logging
from django.conf import settings
import tweepy
from celery.contrib import rdb

logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s -%(filename)s:%(lineno)d - %(message)s')

MAX_TWEETS_PER_PAGE = 200

r = redis.StrictRedis(host='localhost', port=6379, db=0)

@shared_task
def get_items(user_id, external_page):
    rdb.set_trace()
    logging.debug('{} {}'.format(settings.API_KEY, settings.API_SECRET))
    logging.debug('{} {}'.format(settings.ACCESS_TOKEN, settings.ACCESS_TOKEN_SECRET))
Run Code Online (Sandbox Code Playgroud)

到目前为止,如果我删除 set_trace 调用,任务将成功结束,但我需要能够调试它,因为我将添加更多内容。任何帮助,将不胜感激。