Странное поведение Django при возникновении исключения, используя django-rest-framework - PullRequest
0 голосов
/ 03 июля 2019

Я разрабатываю REST API для веб-сервиса.Начиная с нескольких дней я столкнулся с большой проблемой, которая блокирует меня.Когда код имеет исключение (во время разработки), сервер django отвечает только через 5/8 или 10 минут ... с ошибкой, которая возникает.

Чтобы понять, что происходит, я запустил сервер в отладкеиспользуя pycharm .... и затем нажимая на паузу во время большого ожидания .. код зацикливается здесь на python2.7 / SocketServer.py

def _eintr_retry(func, *args):
    """restart a system call interrupted by EINTR"""
    while True:
        try:
            return func(*args)
        except (OSError, select.error) as e:
            if e.args[0] != errno.EINTR:
                raise
    print(foo)

Что я могу сделать?Я довольно отчаянно!

1 Ответ

0 голосов
/ 03 июля 2019

Иногда это происходит в режиме отладки Django, потому что Django генерирует красивую страницу с traceback и списком всех локальных переменных для каждого кадра стека.

Когда в моделях Django используется неэффективный метод __str__ (__unicode__, поскольку вы используете Python 2), это может привести к загрузке Django многих тысяч объектов из базы данных для отображения трассировки.

По моему опыту, это единственная причина очень долгих пауз в исключении в Джанго. Попробуйте запустить с DEBUG = False или проверьте, какая именно модель имеет неэффективный метод __str__, который обращается к базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...