Skip to content

Best way to change backend on the fly #147

@majorgilles

Description

@majorgilles

Hello, sorry if this questions is a bit broad, but I'm looking for a way to not make ring be specifically tied to one precise backend, after the functions have been evaluated.

For example, I often need to dynamically switch from a dev environment to a staging or prod environment, and it would really be problematic if the cache was sharing values from all of those different environment.

One solution I have found is just to disable ring for non prod environments with my own decorator.

def redis_cache(expire: int, coder: str):
    def decorator_redis_cache(func):
        if get_current_stage() == Stage.PROD:
            client = get_redis_client()
            return ring.redis(client=client, expire=expire, coder=coder)(func)
        else:
            return func

    return decorator_redis_cache

but this is far from perfect.

I don't know if there would be a way to get the client dynamically inside ring via a function call...

Sorry if this seems a bit noobish.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions