我正在 Pycharm 中以 DEBUG 模式运行 django 应用程序。 每次我更改代码时都会执行一些系统检查。
pydev debugger: process 2354 is connecting
Performing system checks...
有什么方法可以跳过系统检查/加速此检查吗?
更新:我想在代码更改后禁用系统检查,因为它们太慢了。
不幸的是,没有命令行参数或设置可以打开来关闭
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.
收集运行时类型信息以进行代码洞察”设置:位于“文件”>“设置”>“构建、执行、部署”>“Python 调试器”下。
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
将跳过系统检查。查看
变更日志和代码