在Pycharm中的DEBUG模式下跳过Django服务器的系统检查

27

我正在使用Pycharm在DEBUG模式下运行Django应用程序,每当我更改一些代码时,系统会执行检查。

pydev debugger: process 2354 is connecting

Performing system checks...

有没有办法跳过系统检查/加快这些检查的速度?

更新:我想在代码更改后禁用系统检查,因为它们太慢了。


你花了多长时间才发现这个有问题?在我正在处理的那个糟糕透顶、有25万行代码的老项目上,大约需要10-15秒,即便如此也只是一种相对轻微的不便。 - Withnail
这是有问题的,因为在调试模式下每次代码的单一更改都会导致系统执行检查并且需要时间。我能否禁用这些检查? - domandinho
我向Django提交了一个功能请求:https://code.djangoproject.com/ticket/32296 - Evgeny A.
2个回答

48

问题

很不幸,你不能仅通过命令行参数或设置来关闭 runserver 中的检查。一般来说,有一个 --skip-checks 选项可以关闭系统检查,但它对于 runserver 来说没有用。

如果你阅读 runserver 命令的代码,你会发现它基本上忽略了 requires_system_checksrequires_migration_checks 标志,而是无论如何都明确调用了 self.check()self.check_migrations() 在其 inner_run 方法中

def inner_run(self, *args, **options):
    [ Earlier irrelevant code omitted ...]

    self.stdout.write("Performing system checks...\n\n")
    self.check(display_num_errors=True)
    # Need to check migrations here, so can't use the
    # requires_migrations_check attribute.
    self.check_migrations()

    [ ... more code ...]

一个解决方案

您可以派生自己的run命令,它接受runserver命令但覆盖执行检查的方法:

from django.core.management.commands.runserver import Command as RunServer

class Command(RunServer):

    def check(self, *args, **kwargs):
        self.stdout.write(self.style.WARNING("SKIPPING SYSTEM CHECKS!\n"))

    def check_migrations(self, *args, **kwargs):
        self.stdout.write(self.style.WARNING("SKIPPING MIGRATION CHECKS!\n"))

您需要将此放置在<app>/management/commands/run.py下,其中<app>是应该拥有此命令的适当应用程序。然后,您可以使用./manage.py run调用它,您将得到类似以下内容:

Performing system checks...

SKIPPING SYSTEM CHECKS!

SKIPPING MIGRATION CHECKS!

January 18, 2017 - 12:18:06
Django version 1.10.2, using settings 'foo.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

3
太棒了!如果您覆盖django.contrib.staticfiles.management.commands.runserver,它将加载您所有的静态文件。 - Mike
@Mike,真希望我2小时前看到了你的消息,我回来这里是为了提供同样的建议。我建议在这里包含它,很容易忽略这个并且在Django静态文件上疯狂 :) - Tommaso Barbugli
2021年了,有一个项目需要花费2分钟才能重新启动。现在只需要2秒钟。我无法形容我的快乐之情。就像我重获新生一样。 - chuckjones242

2
在PyCharm的调试器中,有一件事可能会加快速度,那就是关闭“收集运行时类型信息以进行代码洞察”的设置:位于文件>设置>构建、执行、部署>Python调试器下。请注意保留HTML标签。

我之前已经设置了这个选项,但在调试模式下修改代码后仍然加载缓慢。 - domandinho

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接