Skip to main content

A few tools to cache interactions between your nameko services, increasing resiliency and performance at the expense of consistency, when it makes sense.

Project description

=============================
Nameko Cache Tools
=============================

.. image:: https://badge.fury.io/py/nameko-cachetools.png
:target: http://badge.fury.io/py/nameko-cachetools

.. image:: https://travis-ci.org/santiycr/nameko-cachetools.png?branch=master
:target: https://travis-ci.org/santiycr/nameko-cachetools

A few tools to cache interactions between your nameko services, increasing
resiliency and performance at the expense of consistency, when it makes sense.


To use Nameko Cache Tools in a project::



from nameko.rpc import rpc
from nameko_cachetools import CachedRpcProxy


class Service(object):
name = "demo"

other_service = CachedRpcProxy('other_service')

@rpc
def do_something(self, request):
# this rpc response will be cached first, then use the different
# cache strategies available in CachedRpcProxy or
# CacheFirstRpcProxy
other_service.do_something('hi')


Caching strategies:
-------------------


CachedRpcProxy
^^^^^^^^^^^^^^

If a cached version of this request exists, a response from the cache is
sent instead of hangling forever or raising an exception.

If a cached version doesn't exist, it will behave like a normal rpc,
and wait indefinitey for a reply. All successful replies are cached.

**WARNING**: Do NOT use this for setters, rpcs meant to modify state in the
target service

Arguments:

cache
the cache to use. This should resemble a dict but can be more
sophisticated, like the caches provided by the cachetools package.

failover_timeout
if a cached version of this query exists, how long
in seconds should your original request wait until it deems the target
service as unresponsive and moves on to use a cached response

CacheFirstRpcProxy
^^^^^^^^^^^^^^^^^^

Stores responses from the original services and keeps them cached.

If further requests come in with the same arguments and found in the cache,
a response from the cache is sent instead of hitting the destination service.

**WARNING**: Do NOT use this for setters, rpcs meant to modify state in the
target service

args:

cache
the cache to use. This should resemble a dict but can be more
sophisticated, like the caches provided by the cachetools package.




Documentation
-------------

The full documentation is at http://nameko-cachetools.rtfd.org.



History
-------

0.1.0 (2018-06-10)
++++++++++++++++++

* 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

nameko-cachetools-0.3.0.tar.gz (5.9 kB view details)

Uploaded Source

Built Distribution

nameko_cachetools-0.3.0-py2.py3-none-any.whl (4.2 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file nameko-cachetools-0.3.0.tar.gz.

File metadata

File hashes

Hashes for nameko-cachetools-0.3.0.tar.gz
Algorithm Hash digest
SHA256 3e8700c758f0b4908c638a2a34ce035a429f72a0c3a4dcde26746a46785713c8
MD5 84b905ffc38bdb1ac77a32edcfff956a
BLAKE2b-256 631736a013e1bb095b69d13c548045973c8edf206dc9d8027aea4db82f6d2585

See more details on using hashes here.

File details

Details for the file nameko_cachetools-0.3.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for nameko_cachetools-0.3.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 dd78a0d276377fd664d7bd57f024fde9e38929ff6816bec6f94d258f33f40a3a
MD5 007e1d46c896c17f06707a3f2693610b
BLAKE2b-256 add2b217a4ef929219bd5f0e7b7eb88de9e95566ee865c7b9e46a9aa81fe60b3

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