django – 重新定义AppConfig.ready()
发布时间:2020-12-20 11:52:00 所属栏目:Python 来源:网络整理
导读:Django 1.9. 试图学习信号.在AppConfig.ready()的文档中,据说“子类可以覆盖此方法来执行初始化任务,例如注册信号”. (https://docs.djangoproject.com/en/1.9/ref/applications/#django.apps.AppConfig.ready). some_app / apps.py class SomeAppConfig(App
Django 1.9.
试图学习信号.在AppConfig.ready()的文档中,据说“子类可以覆盖此方法来执行初始化任务,例如注册信号”. (https://docs.djangoproject.com/en/1.9/ref/applications/#django.apps.AppConfig.ready). some_app / apps.py class SomeAppConfig(AppConfig): name = 'some_app' def ready(self): print("Redefined ready method in some_app") demo_signals / settings.py INSTALLED_APPS = [ ... "some_app.apps.SomeAppConfig",] python manage.py runserver Redefined ready method in some_app Redefined ready method in some_app Performing system checks... System check identified no issues (0 silenced). May 25,2016 - 15:15:58 Django version 1.9.6,using settings 'demo_signals.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C. 请注意,“some_app中的重新定义的就绪方法”打印两次. 你能帮我理解为什么它被召唤两次.这不是我的错,为什么注册信号需要两次调用? 解决方法
当你使用python manage.py runserver时,Django启动两个进程,一个用于实际开发服务器,另一个用于在代码更改时重新加载应用程序
您可以测试它在AppConfig类中导入os并在ready函数中打印进程ID,如下所示: import os class SomeAppConfig(AppConfig): name = 'some_app' def ready(self): print(os.getpid()) 您将看到它打印两个不同的进程 您也可以在没有重新加载选项的情况下启动服务器,并且您将看到只有一个进程正在运行(并且您的代码打印(“some_app中的重新定义的就绪方法”)将只执行一次): python manage.py runserver --noreload (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |