Search code examples
pythondjangodebuggingpycharmpydev

Skip system checks on Django server in DEBUG mode in Pycharm


I am running django application in Pycharm in DEBUG mode. Each time when i change some code system checks are performed.

pydev debugger: process 2354 is connecting

Performing system checks...

Is there any way to skip system checks/speed up this checks?

UPDATE: I want to disable system checks after changes in code, because they are too slow.


Solution

  • The Problem

    Unfortunately, there's no command-line argument or setting you can just turn on in order to turn off the checks in runserver. In general, there's the --skip-checks option which can turn off system checks but they are of no use for runserver.

    If you read the code of the runserver command, you see that it essentially ignores the requires_system_checks and requires_migration_checks flags but instead explicitly calls self.check() and self.check_migrations() in its inner_run method, no matter what:

    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 ...]
    

    A Solution

    What you could do is derive your own run command, which takes the runserver command but overrides the methods that perform the checks:

    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"))
    

    You need to put this under <app>/management/commands/run.py where <app> is whatever appropriate app should have this command. Then you can invoke it with ./manage.py run and you'll get something like:

    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.