def lpush(self, key, *values, **kwargs):
        def eb(failure):
            failure.trap(RuntimeError)
            if failure.value.args == ("Not connected",):
                self._disconnected(factory)
                return self.lpush(key, *values, **kwargs)
            else:
                return failure

        if not self.factories:
            return defer.fail(NoClientError())

        factory = random.sample(self.factories, 1)[0]
        try:
            d = factory.client.lpush(key, *values, **kwargs)
        except AttributeError:
            self._disconnected(factory)
            return self.lpush(key, *values, **kwargs)
        d.addErrback(eb)
        return d
Make two Pandas DataFrames associating people IDs with two
dataset/ETHPy150Open mochi/udplog/udplog/redis.py/RedisPushMultiClient.lpush--crossover with--dataset/ETHPy150Open UDST/activitysim/activitysim/cdap/cdap.py/make_interactions