Skip to main content

Utilities for working with Ferris Executor Framework

Project description

FERRIS Executor Helper

This package can be used for logging and accessing service configuration, parameters, secrets and state through it's context.

from ferris_ef import context

Accessing package configuration

from ferris_ef import context

context.config.get('some_configuration_key')

Accessing execution parameters

from ferris_ef import context

context.params.get('param_name')

Accessing secrets

With ferris_ef.context.secrets you can access secrets stored on platform, project or package level.

from ferris_ef import context

context.secrets.get('secret_name')

This command will first lookup for secret named secret_name within package secrets (defined in secrets.json file of the package). If such key doesn't exist it will lookup for it within project secrets, and finally within platform's secrets. If secret with such name doesn't exist None will be returned.

Setting secrets

Using ferris_ef.context.secrets.set(name, value, context) method you can set secrets on project and platform level.

from ferris_ef import context

context.secrets.set(name="platform_secret", value={"somekey":"someval"}, context="platform")
Parameter Description
name Name of the secret to be set. If secret with the same name already exist it will be updated
value Value of the secret that should be set
context Context of the secret. Possible values are platform and project

Accessing package id and name

from ferris_ef import context

context.package.name
context.package.id

Accessing and updating package state

from ferris_ef import context

context.state.get()
context.state.put("some_key", "some_value")

Logging

Available levels: DEBUG, INFO (default), ERROR, WARNING, CRITICAL

from ferris_ef import context

context.logging.setLevel('INFO')

context.logging.debug("debug msg")
context.logging.info("info msg")
context.logging.error("error msg")
context.logging.warning("warning msg")
context.logging.critical("critical msg")

Scheduling retry of service execution

Used for scheduling next execution of the service from within that service script.

from ferris_ef import context

context.retry(minutes=0, hours=0, days=0, cron_expression=None, parameters={}):
Parameter Description
minutes Number of minutes until next execution
hours Number of hours until next execution
days Number of days until next execution
cron_expression Cron like expression when next execution should occur. It is not allowed to have / in the cron expression (e.g. */2 3 * * *) If cron_expression is set minutes, hours and days will be skipped
parameters Parameters that will be passed to next execution
from ferris_ef import context

# retry in 3 minutes
jobid = context.scheduler.retry(minutes=3)

# retry in 3 hours
jobid = context.scheduler.retry(hours=3)

# retry in 3 days
jobid = context.scheduler.retry(days=3)

# retry on 56th minute of next hour
jobid = context.scheduler.retry(cron_expression="56 * * * *")

Using ferris_ef for local development

To use ferris_ef for local development and testing without need to run scripts through Executor EF_ENV=local env variable must be set. When it is set ferris_ef.context will be read from local file ef_env.json that must be created within same directory as the script that is accessing ferris_ef.context.
ef_env.json must have following structure:

{
  "params": {
    "package_name": "some_package_name",
    "package_id": "some_package_id",
    "optional_param_1": "param_1_value",
    "optional_param_2": "param_2_value"
  },
  "secrets": {
    "secret_param_1": "secret_1_value",
    "secret_param_2": "secret_2_value"
  },
  "config": {
    "config_param_1": "config_1_value",
    "config_param_2": "config_2_value"
  }
}

NOTE: params, package_name and package_id are mandatory.

When EF_ENV=local is set, package state is also stored and fetched from the local file ef_package_state.json within the same directory. If file does not exist it will be created on the fly.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ferris_ef-1.3.2.tar.gz (14.0 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page