https://github.com/jazzband/django-silkDjangoの滑らかで滑らかなプロファイリングシルクSilkは現在Jazzbandの組織に移り、貢献者を募集しています。あなたが手伝ってくれると思ったら、お気軽にお問い合わせください!Silkは、Djangoフレームワークのためのライブプロファイリングとインスペクションツールです。'silk')注:ミドルウェアの配置は機密です。SilkyMiddlewareは決して実行する機会を得られません。したがって、前に配置されたミドルウェアがprocess_requestから何も返さないようにする必要があります。djangoのドキュメントを参照してください。silk.middleware.SilkyMiddlewareます。しないと、エンコーディングエラーが発生します。urls.py次の行を追加します。collectstaticSilkは自動的にリクエストの傍受を開始し、必要に応じてプロファイリングを追加することができます。git+https://github.com/jazzband/django-silk.git#egg=silk特徴シルクは主に次のもので構成されます。リクエスト/レスポンスをインターセプトするためのミドルウェアデータベースクエリのプロファイリングのためのSQL実行に関するラッパーコードや関数のブロックを手動または動的にプロファイリングするためのコンテキストマネージャ/デコレータ。上記の検査と視覚化のためのユーザーインターフェース。検査依頼Silkミドルウェアは、構成されたデータベース内の要求と応答を傍受して格納します。これらのリクエストは、リクエストの概要を通してSilkのUIを使用してフィルタリングして検査することができます。それは次のようなものを記録します:撮影時間Num。関連するリクエストをクリックすると、各リクエストの詳細が表示されます。SQL検査Silkはまた、各要求によって生成されるSQLクエリをインターセプトします。関係するテーブル、ジョイン数、実行時間などの要約を得ることができます(テーブルは列ヘッダをクリックすることでソートできます):このリクエストがどこから来たのかを知るためにスタックトレースに入る前に:プロファイリングPythonの組み込みcProfileプロファイラを使用するには、SILKY_PYTHON_PROFILER設定をオンにします。UIのリクエストのプロファイリングページで利用可能になります。Trueバイナリ.profファイルも生成したい場合は、次のように設定します。gprof2dotおよびviz.jsを使用して生成されたグラフの視覚化がプロファイルの詳細ページに表示されます。保存された生成されたバイナリ.profファイルにカスタムストレージクラスを使用できます。'path.to.StorageClass'デフォルトのストレージクラスはsilk.storage.ProfilerResultStorageです。これを使用する場合は、選択したパスを指定できます。指定されたディレクトリが存在することを確認する必要があります。'/path/to/profiles/'ダウンロードボタンは、リクエストごとにバイナリの.profファイルで利用できるようになります。snakevizやその他のcProfileツールを使用してさらに解析するために使用できますSilkは、コード/関数の特定のブロックのプロファイリングにも使用できます。これは、この目的のためにデコレータとコンテキストマネージャを提供します。UI内にエントリが表示されます。シルクプロファイリングは、実行時間を提供するだけでなく、要求と同じ方法でブロック内で実行されるSQLクエリを収集します。})コンテキストマネージャコンテキストマネージャを使用すると、名前にコンテキストを追加することができます。これにより、特定のデータベースレコードの処理速度を絞り込むのに役立ちます。})動的プロファイリングSilkの興味深い機能の1つに、動的プロファイリングがあります。pass以下にその可能性を要約します。print(4)動的プロファイリングは、関数をインプレースで変更する点で、Pythonモックフレームワークと同様に動作することに注意してください。my.module.fooを動的にmy.module.fooすることによってfooをプロファイルします。動的プロファイルを適用すると、プロファイリングはトリガーされません。コード生成Silkは現在、要求ごとに2ビットのコードを生成しています。どちらも要求の再生に使用することを意図しています。curlコマンドはコマンドライン経由で再生することができ、PythonコードはDjangoユニットテスト内で使用することも、単なるスタンドアロンスクリプトとして使用することもできます。permissionsSILKY_AUTHORISATIONがTrue場合、デフォルトでSilkはis_staff属性がTrue設定されているユーザーのみを認証します。settings.py次のようにしsettings.py。my_custom_permslambda使用することもできます。user.is_superuserリクエスト/レスポンス団体デフォルトでは、Silkは要求の度にリクエストとレスポンスのボディを保存します。Silkが大きなボディで大量生産されている場合、これはスペース/時間パフォーマンスに大きな影響を与えます。この動作は、次のオプションを使用して構成できます。ignoreメタプロファイリングSilkが要求/応答時間にどのような影響を与えているかを見ることができると便利なことがあります。TrueSilkは次に、各要求の最後にすべてをデータベースに保存するまでの時間を記録します。上記のスクリーンショットでは、リクエストが29ms(Djangoから22ms、Silkから7ms)かかることに注意してください。要求の一部を記録する高負荷のサイトでは、作成された要求のほんの一部を記録するのが役に立ちます。settings.py次の行を追加しsettings.py。注:この設定はSILKY_INTERCEPT_FUNCと相互排他的です。requests要求を記録するためのカスタムロジック高負荷のサイトでは、リクエストを傍受するための独自のロジックを記述することも役立ちます。settings.py次の行を追加しsettings.py。注:この設定はSILKY_INTERCEPT_PERCENTと相互排他的です。enabled.lambda使用することもできます。varを設定して、それが格納するリクエスト/レスポンスの行数を制限することができます。10**4ガベージコレクションは、オーバーヘッドを削減する要求の割合に対してのみ実行されます。管理コマンドは、ログに記録されたすべてのデータを消去します。silk_clear_request_log貢献するこれはジャズバンドプロジェクトです。ガイドラインに従うことに同意します。silk開発に使用できるプロジェクトという名前のprojectがあります。シンクコードがシンボリックリンクされているので、サンプルprojectとsilkパッケージで同時に作業できます。ローカル開発をセットアップするには、最初にテストprojectすべての依存関係をインストールする必要があります。silkの依存関係をインストールする必要があります。requirements.txtこの時点で、仮想環境には、サンプルprojectとsilk両方を正常に実行するために必要なものすべてが必要です。DBおよびDB_NAME環境変数を設定する必要があります。.travis.ymlチェックして.travis.yml。サンプルprojectディレクトリのルートから、djangoサーバを起動します。