djangoデバッグモードでメモリがオーバーフローしたピットとwerkzeugのデバッグモードを閉じる方法(プロジェクト起動時に表示される:Debugger is active!)
2372 ワード
一、djangoのデバッグモード
djangoのデバッグモードは強力ですが、このモードではすべてのSQLクエリーがメモリに保存されるので、プロジェクトがオンラインになったらデバッグモードをオフにし、メモリオーバーフローを避ける必要があります.自分のdjangoプロジェクトのメモリ消費量が上昇していることに気づいたら、慌てないでください.デバッグモードがオンになっただけかもしれません.
二、werkzeugのデバッグモード
セキュリティチームの同僚は、djangoプロジェクトのデバッグモードが開かれたことを注意してくれました.半日探して、djangoのデバッグモードではなくwerkzeugのデバッグモードが開かれていることに気づきました.では、どうやって閉じますか?
位置決めしてみるとdjango_extensionsライブラリのrunserver_plusコマンドはwerkzeugのインタフェース関数を呼び出します.そのため、独自のrunserver_を定義する必要があります.plusコマンド、django_を上書きextensionsライブラリのrunserver_plusコマンドは、werkzeugのインタフェースを呼び出すとデバッグモードを閉じます.手順は次のとおりです.
1.コマンドファイルのコピー
django_extensionsライブラリはdjangoのコマンド拡張ライブラリですrunserver_plusコマンドに対応するファイルは、そのインストールパスから私たちのプロジェクトのルートディレクトリにコピーされます.
python_path/dist-packages/django_extensions/management/commands/runserver_plus.py project_にコピーpath/management/commands/runserver_plus.py、python_pathはpythonライブラリのインストールパス、project_pathはプロジェクトのルートディレクトリです.
2.カスタムコマンドファイルの変更
プロジェクトの変更path/management/commands/runserver_plus.py,Command.inner_runメソッド呼び出しrun_Simpleのエントリuse_debuggerをFalseに変更しました.
に改心
3.プロジェクト構成の変更
修正するpyのINSTALLED_APPSアイテムは、私たちのプロジェクトのアプリケーションがdjango_に書かれていることを確認します.extensionsの前にrunserverをカスタマイズしましたplusコマンドはdjango_を上書きします.extensionsのrunserver_plusコマンド.
プロジェクトを再起動するとDebugger is activeが見つかります!のヒントはもうありません.
djangoのデバッグモードは強力ですが、このモードではすべてのSQLクエリーがメモリに保存されるので、プロジェクトがオンラインになったらデバッグモードをオフにし、メモリオーバーフローを避ける必要があります.自分のdjangoプロジェクトのメモリ消費量が上昇していることに気づいたら、慌てないでください.デバッグモードがオンになっただけかもしれません.
二、werkzeugのデバッグモード
セキュリティチームの同僚は、djangoプロジェクトのデバッグモードが開かれたことを注意してくれました.半日探して、djangoのデバッグモードではなくwerkzeugのデバッグモードが開かれていることに気づきました.では、どうやって閉じますか?
位置決めしてみるとdjango_extensionsライブラリのrunserver_plusコマンドはwerkzeugのインタフェース関数を呼び出します.そのため、独自のrunserver_を定義する必要があります.plusコマンド、django_を上書きextensionsライブラリのrunserver_plusコマンドは、werkzeugのインタフェースを呼び出すとデバッグモードを閉じます.手順は次のとおりです.
1.コマンドファイルのコピー
django_extensionsライブラリはdjangoのコマンド拡張ライブラリですrunserver_plusコマンドに対応するファイルは、そのインストールパスから私たちのプロジェクトのルートディレクトリにコピーされます.
python_path/dist-packages/django_extensions/management/commands/runserver_plus.py project_にコピーpath/management/commands/runserver_plus.py、python_pathはpythonライブラリのインストールパス、project_pathはプロジェクトのルートディレクトリです.
2.カスタムコマンドファイルの変更
プロジェクトの変更path/management/commands/runserver_plus.py,Command.inner_runメソッド呼び出しrun_Simpleのエントリuse_debuggerをFalseに変更しました.
run_simple(
self.addr,
int(self.port),
handler,
use_reloader=use_reloader,
use_debugger=True,
extra_files=extra_files,
reloader_interval=reloader_interval,
reloader_type=reloader_type,
threaded=threaded,
request_handler=WSGIRequestHandler,
ssl_context=ssl_context,
)
に改心
run_simple(
self.addr,
int(self.port),
handler,
use_reloader=use_reloader,
use_debugger=False,
extra_files=extra_files,
reloader_interval=reloader_interval,
reloader_type=reloader_type,
threaded=threaded,
request_handler=WSGIRequestHandler,
ssl_context=ssl_context,
)
3.プロジェクト構成の変更
修正するpyのINSTALLED_APPSアイテムは、私たちのプロジェクトのアプリケーションがdjango_に書かれていることを確認します.extensionsの前にrunserverをカスタマイズしましたplusコマンドはdjango_を上書きします.extensionsのrunserver_plusコマンド.
INSTALLED_APPS = [
...
'project.ProjectConfig', # , django_extensions
'django_extensions', # django_extensions
...
]
プロジェクトを再起動するとDebugger is activeが見つかります!のヒントはもうありません.