celery_redis's People
Forkers
christiancadieuxcelery_redis's Issues
timeout
Here is a version that works well for me. it uses the new timeout option on get_message so it's
timely and no polling. on redis_py 2.10.3, get_message return twice, once very quickly and once at the message or at the timeout. either way, it's in a loop so it works:
def wait_for(self, task_id,
timeout=None, interval=0.5, no_ack=True, propagate=True,on_interval=None):
key = self.get_key_for_task(task_id)
p = self.client.pubsub(ignore_subscribe_messages=True)
p.subscribe(key)
meta = self.client.get(key)
# check the result, if not there, start listening on pubsub queue
if meta:
meta = self.decode(meta)
if meta['status'] not in states.READY_STATES:
meta = None
if not meta:
if timeout:
time_elapsed = 0.0
while True:
start = time.time()
message = p.get_message(timeout=timeout)
if message:
break
if on_interval:
on_interval()
#time.sleep(interval) <<< NOT NEED,
time_elapsed += interval
if time_elapsed >= timeout:
raise TimeoutError('The operation timed out.')
else:
message = next(p.listen())
assert message['type'] == 'message'
assert message['channel'] == key
meta = self.decode(message['data'])
p.unsubscribe()
p.close()
return meta
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.