在 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_checks
和 requires_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.
我 运行 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_checks
和 requires_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.