Python provider
Installation
Configuration and Usage
The flagd provider can operate in two modes: RPC (evaluation takes place in flagd, via gRPC calls) or in-process (evaluation takes place in-process, with the provider getting a ruleset from a compliant sync-source).
Remote resolver (RPC)
This is the default mode of operation of the provider.
In this mode, FlagdProvider
communicates with flagd via the gRPC protocol.
Flag evaluations take place remotely at the connected flagd instance.
Instantiate a new FlagdProvider instance and configure the OpenFeature SDK to use it:
from openfeature import api
from openfeature.contrib.provider.flagd import FlagdProvider
api.set_provider(FlagdProvider())
In-process resolver
This mode performs flag evaluations locally (in-process).
from openfeature import api
from openfeature.contrib.provider.flagd import FlagdProvider
from openfeature.contrib.provider.flagd.config import ResolverType
api.set_provider(FlagdProvider(
resolver_type=ResolverType.IN_PROCESS,
offline_flag_source_path="my-flag.json",
))
Configuration options
The default options can be defined in the FlagdProvider constructor.
Option name | Environment variable name | Type & Values | Default | Compatible resolver |
---|---|---|---|---|
resolver_type | FLAGD_RESOLVER | enum - rpc , in-process |
rpc | |
host | FLAGD_HOST | str | localhost | rpc & in-process |
port | FLAGD_PORT | int | 8013 (rpc), 8015 (in-process) | rpc & in-process |
tls | FLAGD_TLS | bool | false | rpc & in-process |
deadline | FLAGD_DEADLINE_MS | int | 500 | rpc & in-process |
stream_deadline_ms | FLAGD_STREAM_DEADLINE_MS | int | 600000 | rpc & in-process |
keep_alive_time | FLAGD_KEEP_ALIVE_TIME_MS | int | 0 | rpc & in-process |
selector | FLAGD_SOURCE_SELECTOR | str | null | in-process |
cache_type | FLAGD_CACHE | enum - lru , disabled |
lru | rpc |
max_cache_size | FLAGD_MAX_CACHE_SIZE | int | 1000 | rpc |
retry_backoff_ms | FLAGD_RETRY_BACKOFF_MS | int | 1000 | rpc |
offline_flag_source_path | FLAGD_OFFLINE_FLAG_SOURCE_PATH | str | null | in-process |
[!NOTE] Some configurations are only applicable for RPC resolver.
Reconnection
Reconnection is supported by the underlying gRPC connections. If the connection to flagd is lost, it will reconnect automatically. A failure to connect will result in an error event from the provider, though it will attempt to reconnect indefinitely.
Deadlines
Deadlines are used to define how long the provider waits to complete initialization or flag evaluations. They behave differently based on the resolver type.
Deadlines with Remote resolver (RPC)
If the remote evaluation call is not completed within this deadline, the gRPC call is terminated with the error DEADLINE_EXCEEDED
and the evaluation will default.
TLS
TLS is available in situations where flagd is running on another host.
License
Apache 2.0 - See LICENSE for more information.