ロギングとデバッグ
詳細ログを有効にし、HTTP リクエストを確認し、一般的な SDK エラーを診断します。
SDK が予期しない動作をしたとき、理由を突き止める最短の方法は、通常、その背後にある HTTP リクエストとレスポンスを見ることです。
詳細なリクエストログを有効にする
SDK は Python の標準の logging モジュールと requests ライブラリを内部で使用しています。SDK が送るすべての HTTP リクエストを確認するには:
import logging
import http.client as http_client
http_client.HTTPConnection.debuglevel = 1
logging.basicConfig(level=logging.DEBUG)
logging.getLogger("urllib3").setLevel(logging.DEBUG)
logging.getLogger("urllib3").propagate = Trueこれにより、各リクエスト行、ヘッダー(SDK が伏せている箇所は伏せたまま)、およびレスポンスのステータスが出力されます。これを有効にして SDK を 1 回呼び出せば、送信内容を正確に確認できます。
失敗した 1 回の呼び出しを確認する
グローバルなロギングを有効にせずに 1 回の呼び出しを確認したい場合は、直接アダプターに入ってください。〜上のすべての高レベルメソッドは ワークスペース / プロジェクト / バージョン 最終的には roboflow.adapters.rfapi (または deploymentapi, vision_events_apiの関数を呼び出します。); それらを直接呼び出すと、生のレスポンスが返り、高レベルメソッドが行う後処理はすべてスキップされます:
from roboflow.adapters import rfapi
response = rfapi.get_workflow("YOUR_API_KEY", workspace_url="my-workspace", workflow_url="slow-webhooks")
print(response)高レベルの呼び出しが例外を発生させた場合でも、同じアダプター呼び出しは通常、 RoboflowError を送出します。その文字列はサーバーの応答本文をそのまま表したもので、高レベルメソッドがラップする可能性のある bad request エラーの診断に役立ちます。
よくあるエラー
RoboflowError: 401
認証失敗。次のいずれかです:
ROBOFLOW_API_KEYが設定されていない、またはに渡されたキーが
Roboflow(api_key=...)が間違っている、またはキーは有効だが、操作に必要なスコープを持っていない。参照: スコープ付き API キー.
RoboflowError: 404
リソースが見つかりません。ワークスペース / プロジェクト / バージョン のスラッグが Web アプリの URL バーにあるものと一致するか確認してください。スラッグは表示名と必ずしも一致せず、SDK は全体でスラッグを使用します。
RoboflowError: 423 Locked
ワークスペースは請求停止状態です。Web アプリの請求ページで解決するか、サポートに連絡してください。
RuntimeError から restore()
この項目は現在ゴミ箱にありません。すでに 30 日の保持期間後に完全に削除されたか、まだワークスペースで有効なままです。
アップロードが遅い場合
Workspace.upload_dataset() のデフォルトは num_workers=10です。大きなデータセットでは、これを増やしてください(最大でもおよそ 25 まで。それを超えるとスロットリングされたレスポンスが返り始めます)。逆に、ネットワークが制約されている場合や共有インフラの場合は、減らしてください。
ImportError での roboflow-slim
roboflow-slim は Pillow、NumPy、OpenCV、Matplotlib を含みません。もし roboflow.models.* からインポートするか、 .predict(...).save(...)形式の可視化ヘルパーを呼び出す場合は、完全版の roboflow パッケージをインストールしてください。
ソースのどこを確認するか
スタックトレースが roboflow.core.workspace.py または roboflow.adapters.rfapi、その GitHub ソース を指している場合は検索可能で、メソッドは短いです。メソッドの正確なシグネチャについては、アダプターの docstring が信頼できる唯一の情報源です。
バグを報告する
で issue を開く際は github.com/roboflow/roboflow-pythonに、次を含めてください:
roboflow.__version__使用している Python のバージョン
最小限の再現手順(API キーは伏せたもの)
完全なトレースバック、または上記で説明した詳細ログの出力
HTTP リクエスト / レスポンスを含む issue は通常 1 回のやり取りで修正できますが、含まれていない issue は、それらを集めるために追加のやり取りが必要になることがよくあります。
最終更新
役に立ちましたか?