Skip to main content

A wrapper for using nameko services with Flask

Project description

# flask_nameko

A wrapper for using nameko services with Flask

## Installation

Install it via PyPI:

pip install flask_nameko

## Usage

To start using `flask_nameko`, you need to create and configure a new `FlaskPooledClusterRpcProxy` singleton, which you'll use to communicate with your Nameko cluster.

# __init__.py
from flask import Flask
from flask_nameko import FlaskPooledClusterRpcProxy

rpc = FlaskPooledClusterRpcProxy()

def create_app():
app = Flask(__name__)
app.config.update(dict(
NAMEKO_AMQP_URI='amqp://localhost'
))

rpc.init_app(app)

app = create_app()

Then, you can use the `FlaskPooledClusterRpcProxy` singleton just as you would normally use a `ClusterRpcProxy`, by accessing individual services by name and calling methods on them:

# routes.py

from . import (
app,
rpc
)

@app.route('/'):
def index():
result = rpc.service.do_something('test')
return result

## API

### Configuration

`FlaskPooledClusterRpcProxy` accepts all nameko configuration values, prefixed with the `NAMEKO_` prefix. In addition, it exposes additional configuration options:

* `NAMEKO_INITIAL_CONNECTIONS (int, default=2)` - the number of initial connections to the Nameko cluster to create
* `NAMEKO_MAX_CONNECTIONS (int, default=8)` - the max number of connections to the Nameko cluster to create before raises an error
* `NAMEKO_CONNECT_ON_METHOD_CALL (bool, default=True)` - whether connections to services should be loaded when the service is accessed (False) or when a method is called on a service (True)
* `NAMEKO_RPC_TIMEOUT` (int, default=None) - the default timeout before raising an error when trying to call a service RPC method
* `NAMEKO_POOL_RECYCLE` (int, default=None) - if specified, connections that are older than this interval, specified in seconds, will be automatically recycled on checkout. This setting is useful for environments where connections are happening through a proxy like HAProxy which automatically closes connections after a specified interval.

### Proxies

*flask_nameko.**FlaskPooledClusterRpcProxy**(app=None, connect_on_method_call=True)*

This class is used to create a pool of connections to a Nameko cluster. It provides the following options:

* `connect_on_method_call` - if this is true, the connection to a service is created when a method is called on a service rather than when the service is accessed

*init_app(app=None)*

Configure the proxy for a given app.

## Development

$ git clone git@github.com:jessepollak/flask_nameko.git flask_nameko
$ cd flask_nameko
$ make develop


=======
History
=======

`1.4.0 <https://github.com/clef/flask-nameko/compare/v1.3.0...v1.4.0>`__ (2017-09-10)
-------------------------------------------------------------------------------------

Features
~~~~~~~~~~~~~

- **Python**: Python 3 support + fix pep8 voilations
(`69d116 <https://github.com/jessepollak/flask-nameko/commit/69d116>`__)

`1.3.0 <https://github.com/clef/flask-nameko/compare/v1.2.0...v1.3.0>`__ (2016-09-20)
-------------------------------------------------------------------------------------

Documentation
~~~~~~~~~~~~~

- **README**: adds docs for NAMEKO\_POOL\_RECYCLE
(`a27a1be <https://github.com/clef/flask-nameko/commit/a27a1be>`__)

Features
~~~~~~~~

- **ConnectionPool**: add pool recycling to eliminate closed connection
issue
(`4d90f1d <https://github.com/clef/flask-nameko/commit/4d90f1d>`__)

`1.2.0 <https://github.com/clef/flask-nameko/compare/v1.1.1...v1.2.0>`__ (2016-09-16)
-------------------------------------------------------------------------------------

Features
~~~~~~~~

- **PooledClusterRpcProxy**: add support for NAMEKO\_RPC\_TIMEOUT
setting
(`d4d6042 <https://github.com/clef/flask-nameko/commit/d4d6042>`__)

`1.1.0 <https://github.com/clef/flask-nameko/compare/v1.0.1...v1.1.0>`__ (2016-08-09)
-------------------------------------------------------------------------------------

Features
~~~~~~~~

- **FlaskPooledClusterRpcProxy**: add lazy\_load\_services config
(`26184f6 <https://github.com/clef/flask-nameko/commit/26184f6>`__)

`0.1.0 <https://github.com/clef/flask-nameko/compare/89698bba0ece0781f931b006009d3b3468e7883a...v0.1.0>`__ (2016-07-28)
-----------------------------------------------------------------------------------------------------------------------

Features
~~~~~~~~

- **flask\_nameko**: adds FlaskPooledClusterRpcProxy
(`285df05 <https://github.com/clef/flask-nameko/commit/285df05>`__)

0.1.0
------------------

* First release on PyPI.

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

flask_nameko-1.4.0.tar.gz (7.3 kB view details)

Uploaded Source

File details

Details for the file flask_nameko-1.4.0.tar.gz.

File metadata

File hashes

Hashes for flask_nameko-1.4.0.tar.gz
Algorithm Hash digest
SHA256 fbf5790cada16e1c9a7861423dd4295ccd4beb08b5c4f4451544a11cf5841880
MD5 d28dce29e8399d0b9fef116afafc593c
BLAKE2b-256 a75977af16c07696036f2ab167013f6275960dad4880dd485220b39d940399c1

See more details on using hashes here.

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