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

问题描述 投票:0回答:3

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

pydev debugger: process 2354 is connecting

Performing system checks...

有什么方法可以跳过系统检查/加速此检查吗?

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

python django debugging pycharm pydev
3个回答
48
投票

问题

不幸的是,没有命令行参数或设置可以打开来关闭

runserver
中的检查。 一般来说,有一个
--skip-checks
选项可以关闭系统检查,但它们对
runserver
没有用。

如果您阅读

runserver
命令的代码,您会发现它本质上忽略了
requires_system_checks
requires_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.
    

2
投票
有一件事可能会加快 PyCharm 调试器的速度,那就是关闭“

收集运行时类型信息以进行代码洞察”设置:位于“文件”>“设置”>“构建、执行、部署”>“Python 调试器”下。


0
投票
我没有足够的声誉来评论

Louis 的回答,但从 django 4.0 开始,runserver

命令不再显式调用 
self.check()
。它现在
有条件地基于--skip-checks
选项运行。

def inner_run(self, *args, **options): [ Earlier irrelevant code omitted ...] if not options["skip_checks"]: 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 ...]
换句话说,

python manage.py runserver --skip-checks

将跳过系统检查。

查看

变更日志代码

© www.soinside.com 2019 - 2024. All rights reserved.