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.
Metadata
Release files for flask_nameko 1.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| flask_nameko-1.4.0.tar.gz | 7.3 kB | Without provenance | Details |
Release files / flask_nameko-1.4.0.tar.gz
| Download URL | flask_nameko-1.4.0.tar.gz |
|---|---|
| Size | 7.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
fbf5790cada16e1c9a7861423dd4295ccd4beb08b5c4f4451544a11cf5841880
|
|
BLAKE2b-256 checksum How to use checksums |
a75977af16c07696036f2ab167013f6275960dad4880dd485220b39d940399c1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Security for flask_nameko 1.4.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.