Her er hvad jeg kom frem til. Ikke sikker på, hvordan det ville håndtere komplekse forbindelser, og hvad det ellers kan bryde. Bare lad være med at køre din selvkørende bil med det...
def new_client(client, **kwargs):
"""return a new Redis client based on an existing one,
with some kwargs modified.
"""
kwargs = {**client.connection_pool.connection_kwargs, **kwargs}
return redis.StrictRedis(**kwargs)
Med dette kan vi nu gøre f.eks.:
client.set(name, pickle.dumps(stuff))
...
# later
with new_client(client, decode_responses=False) as binclient:
data = binclient.get(name)
stuff = pickle.loads(data)