Skip to main content

Sprockets command line application runner

Project description

The sprockets CLI interface for running applications. Applications are meant to be run by a controller that is managed by the sprockets CLI interface.

The sprockets CLI interface loads controller applications that are registered using setuptools entry points.

Version Downloads Status Coverage License

Example CLI Usage

Help:

# sprockets --help

usage: sprockets [-h] [--apps] [--plugins] [-e [PLUGIN]] [-s] [-v] [--version]
                 CONTROLLER ... [APP]

Command line tool for starting a Sprockets application

positional arguments:
  CONTROLLER            Available sprockets application controllers
    http                HTTP Application Controller
    amqp                RabbitMQ Worker Controller
  APP                   Application to run

optional arguments:
  -h, --help            show this help message and exit
  --apps                List installed applications
  --plugins             List installed plugins
  -e [PLUGIN], --enable [PLUGIN]
                        Enable a plugin
  -s, --syslog          Log to syslog
  -v, --verbose         Verbose logging output, use -vv for DEBUG level
                        logging
  --version             show program's version number and exit

Find more Sprockets controllers and plugins at
https://sprockets.readthedocs.org

Starting a Web App with the NewRelic plugin:

# sprockets -e newrelic http my_web_app

Controllers

Each controller is expected to expose at least a main(application, args) method that would be invoked when starting the application. Additional, a controller can implement a add_cli_arguments(parser) method that will be invoked when setting up the command line parameters. This allows controllers to inject configuration directives into the cli.

Controller API Summary:

module.add_cli_arguments(ArgumentParser)     # optional
module.main(app_module, argparse.Namespace)

Plugins

Plugins are able to inject themselves at multiple points in the application lifecycle. Plugins that implement a initialization(controller) method will see that method invoked before a controller is started. In addition, if a on_startup(controller) method is defined, it will be invoked after a Controller has started a application. Finally if a on_shutdown(controller) method is defined, it will be invoked when a controller has shutdown.

Plugin API Summary:

plugin.initialize(controller_module)   # optional
plugin.on_start(controller_module)     # optional
plugin.on_shutdown(controller_module)  # optional

Example Entrypoints

Controller:

{'sprockets.controller': ['http=sprockets.controllers.http:None']},

Application:

{'sprockets.http.app': ['app-name=package.or.module:None']}

(Replace app-name with the name of your application)

Applications

Applications can be a python package or module and if they are registered to a specific controller, can be referenced by an alias. Application contracts vary by controller.

Download files

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

Source Distribution

sprockets.cli-0.1.0.tar.gz (6.9 kB view hashes)

Uploaded Source

Built Distribution

sprockets.cli-0.1.0-py2.py3-none-any.whl (8.9 kB view hashes)

Uploaded Python 2 Python 3

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