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

Skip system checks on Django server in DEBUG mode in Pycharm

我 运行 Django 应用程序在 Pycharm 处于 DEBUG 模式。 每次我更改时都会执行一些代码系统检查。

pydev debugger: process 2354 is connecting

Performing system checks...

有什么方法可以跳过系统 checks/speed 的检查吗?

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

有一件事可能会加速 PyCharm 的调试器,那就是关闭“收集 运行 代码洞察的时间类型信息”设置:位于文件 > 设置 > 构建、执行、部署 > Python 调试器下。

问题

不幸的是,没有 command-line 参数或设置可以打开以关闭 runserver 中的检查。 一般,有--skip-checks选项可以关闭系统检查,但它们对runserver没有用。

如果您阅读 runserver 命令的代码,您会发现它基本上忽略了 requires_system_checksrequires_migration_checks 标志,而是显式调用 self.check()self.check_migrations() 在其 inner_run method 中,无论如何:

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.