コンテンツにスキップ

Python クイックスタート

数分で、あなたの Python サービスはフィーチャーフラグをプロセス内で評価するようになります。確認ごとのネットワーク往復も、リクエスト経路のレイテンシもなく、1 回のポーリングがプロセスの処理するすべてのリクエストをまかないます。

依存はゼロ。SDK は純粋な標準ライブラリで、Python 3.11 以降で動きます。asyncio アプリの中でも同じように動きます。評価はプレーンなメモリ内の読み取りなので、await するものはありません。

SDK は GitHub の公開リポジトリにあります。そこから直接、リリースに固定してインストールしてください。

Terminal window
pip install "git+https://github.com/FortressFlag/FortressFlag_SDK_python@v1.0.0"

@v1.0.0 を省くと、代わりに development ブランチを追うことになります。修正を試すには便利ですが、本番で望むものではありません。

2. サーバーキー、正真正銘の秘密

Section titled “2. サーバーキー、正真正銘の秘密”

この SDK はサーバーキー(ffs_…)を使います。モバイルや Web の SDK が出荷するクライアントキーとは正反対で、ターゲティングルールを含む完全な ruleset をダウンロードできます。データベースのパスワードとまったく同じように扱ってください。環境変数かシークレットマネージャーに置き、コード、リポジトリ、ログには決して入れません。2 つのキーのクラスを並べて。

import os
import fortressflag
try:
client = fortressflag.create(
fortressflag.Configuration(key=os.environ["FF_SERVER_KEY"])
)
except fortressflag.MalformedKeyError:
# SDK が例外を送出する唯一の場所:何かを配信する前の、不正なキー。
raise SystemExit(1)
client.start(timeout=15.0) # 最初の ruleset(または期限)で戻る
# ... サービスが動く。flag の確認はもうメモリ内の関数呼び出し。

start が例外を送出することはありません。最初の取得が時間内に届かなければ、クライアントはバックグラウンドスレッドで再試行を続け、その間、呼び出し元はフォールバックを受け取ります。ポーラーはデーモンスレッドで、インタープリタの終了を妨げることはありません。

enabled = client.bool_value(
"new-checkout",
fortressflag.Context(
key="user-42", # 安定したコンテキストキー:ユーザー ID、セッション ID など、あなたの選択
tags={"cohort": "beta"},
),
False, # flag が不明、または一度も取得していないときのフォールバック
)

client.string_value と client.number_value も同じように動きます。コンテキストの key はパーセンテージロールアウトがバケット分けの基準にするものです。同じ識別子を一貫して渡せば、各ユーザーは安定したコホートを得ます。それはあなたのデータです。SDK が検証、保存、ログすることは決してありません。

これで完了です。サービスはローカルで flag を評価しています。ダッシュボードの変更は約 1 分以内にすべてのプロセスに届きます。

bool_value、string_value、number_value は常に答え、決して例外を送出しません。flag の問題がサービスを止めることがあってはならないからです。再起動したプロセスは、最初の取得が届くまで呼び出し箇所のフォールバックを配信します(あるいは設定で cache_path を指定して、最後の ruleset を任意のファイルに永続化すれば、再起動はそこから即座に再開します)。失効したキーでさえ何も壊しません。SDK は、新しいキーを渡すまで、最後にダウンロードした ruleset で評価を続けます。