Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

readme: Optimizely DFM #188

Merged
merged 5 commits into from
Jul 26, 2019
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
89 changes: 88 additions & 1 deletion README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,92 @@ dashboard, please contact your Optimizely account executive.
Using the SDK
~~~~~~~~~~~~~

See the Optimizely `Full Stack documentation`_ to learn how to
You can initialize the Optimizely instance in three ways: with a datafile, by providing an `sdk_key`, or by providing a `ConfigManager`_. Each method is described below.

1. Initialize Optimizely with a datafile. This datafile will be used as
ProjectConfig throughout the life of Optimizely instance.
::

optimizely.Optimizely(
datafile
)

2. Initialize Optimizely by providing an 'sdk_key'. This will initialize
a PollingConfigManager that makes an HTTP GET request to the URL (formed
using your provided `sdk key` and the default datafile CDN URL
template) to asynchronously download the project datafile at regular
intervals and update ProjectConfig when a new datafile is recieved. A
hard-coded datafile can also be provided along with the `sdk_key` that
will be used initially before any update.
::

optimizely.Optimizely(
sdk_key='put_your_sdk_key_here'
)

3. Initialize Optimizely by providing a ConfigManager that implements `BaseConfigManager`_. You may use our `PollingConfigManager` as needed.
::

optimizely.Optimizely(
config_manager=custom_config_manager
)

PollingConfigManager
''''''''''''''''''''

The `PollingConfigManager` asynchronously polls for datafiles from a
specified URL at regular intervals by making HTTP requests.

polling_config_manager = PollingConfigManager( sdk_key=None,
datafile=None, update_interval=None, url=None, url_template=None,
logger=None, error_handler=None, notification_center=None,
skip_json_validation=False )

**Note**: You must provide either the `sdk_key` or URL. If you provide both, the URL takes precedence.

**sdk_key** The `sdk_key` is used to compose the outbound HTTP request to
the default datafile location on the Optimizely CDN.

**datafile** You can provide an initial datafile to bootstrap the
``ProjectConfigManager`` so that it can be used immediately. The initial
datafile also serves as a fallback datafile if HTTP connection cannot be
established. The initial datafile will be discarded after the first
successful datafile poll.

**update_interval** The update_interval is used to specify a fixed delay
in seconds between consecutive HTTP requests for the datafile.

**url_template** A string with placeholder ``{sdk_key}`` can be provided
so that this template along with the provided `sdk key` is used to form
the target URL.

You may also provide your own logger, error_handler, or
notification_center.

Advanced configuration
''''''''''''''''''''''

The following properties can be set to override the default
configurations for `PollingConfigManager`.

================ ======================================================== =====================================================================================
**PropertyName** **Default Value** **Description**
================ ======================================================== =====================================================================================
update_interval 5 minutes Fixed delay between fetches for the datafile
sdk_key None Optimizely project SDK key
url None URL override location used to specify custom HTTP source for the Optimizely datafile
url_template https://cdn.optimizely.com/datafiles/{sdk_key}.json Parameterized datafile URL by SDK key
datafile None Initial datafile, typically sourced from a local cached source
================ ======================================================== =====================================================================================

A notification signal will be triggered whenever a *new* datafile is
fetched and Project Config is updated. To subscribe to these
notifications, use:

``notification_center.add_notification_listener(NotificationTypes.OPTIMIZELY_CONFIG_UPDATE, update_callback)``


For Further details see the Optimizely `Full Stack documentation`_ to learn how to
set up your first Python project and use the SDK.

Development
Expand Down Expand Up @@ -123,6 +208,8 @@ Please see `CONTRIBUTING`_.
.. _Full Stack documentation: https://docs.developers.optimizely.com/full-stack/docs
.. _Rollouts documentation: https://docs.developers.optimizely.com/rollouts/docs
.. _CONTRIBUTING: CONTRIBUTING.rst
.. _ConfigManager: https://github.com/optimizely/python-sdk/tree/master/optimizely/config_manager.py
.. _BaseConfigManager: https://github.com/optimizely/python-sdk/tree/master/optimizely/config_manager.py#L32

.. |PyPI version| image:: https://badge.fury.io/py/optimizely-sdk.svg
:target: https://pypi.org/project/optimizely-sdk
Expand Down