def brpoplpush(self, src, dst, timeout=<NUM_LIT:0>):
with self.pipe as pipe:<EOL><INDENT>res = pipe.brpoplpush(self.redis_key(src),<EOL>self.redis_key(dst), timeout)<EOL>f = Future()<EOL>def cb():<EOL><INDENT>f.set(self.valueparse.decode(res.result))<EOL><DEDENT>pipe.on_execute(cb)<EOL>return f<EOL><DEDENT>
Pop a value off the tail of ``src``, push it on the head of ``dst``
and then return it.

This command blocks until a value is in ``src`` or until ``timeout``
seconds elapse, whichever is first. A ``timeout`` value of 0 blocks
forever.