使用django-rest-framework发生异常时Django的奇怪行为

时间:2019-07-03 13:01:27

标签: python django django-rest-framework

我正在为Web服务开发一些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 :(得分:0)

有时会在Django调试模式下发生,因为Django会生成一个包含回溯的漂亮页面,并列出每个堆栈帧的所有局部变量的列表。

如果Django模型的for prop in response.css('.grid-item'): link = prop.css('.property-image a::attr(href)').get() bedrooms = prop.xpath("normalize-space(.//*[contains(@class,'bedrooms')]/label/following::text())").get() bathrooms = prop.xpath("normalize-space(.//*[contains(@class,'bathrooms')]/label/following::text())").get() gar = prop.xpath("normalize-space(.//*[contains(@class,'garages')]/label/following::text())").get() 方法效率低下(由于您使用的是Python 2,因此__str__,这可能导致Django从数据库加载成千上万个对象以显示回溯。

根据我的经验,这是在Django中异常暂停时间很长的唯一原因。尝试使用__unicode__进行运行,或检查哪种模型的DEBUG = False方法无法有效地击中数据库。