cunfused why gevent block redis' socket request?
Tony Shao
xiocode at gmail.com
Fri Dec 28 22:46:28 EST 2012
GOAL:spawn a few greenlet worker deal with the data pop from redis (pop from redis and then put into queue)
RUNNING ENV: ubuntu 12.04
PYTHON VER: 2.7
GEVENT VER: 1.0 RC2
REDIS VER:2.6.5
REDIS-PY VER:2.7.1
from gevent import monkey; monkey.patch_all()
import gevent
from gevent.pool import Group
from gevent.queue import JoinableQueue
import redis
tasks = JoinableQueue()
task_group = Group()
def crawler():
while True:
if not tasks.empty():
print tasks.get()
gevent.sleep()
task_group.spawn(crawler)
redis_client = redis.Redis()
data = redis_client.lpop('test') #<----------Block here
tasks.put(data)
Try to pop data from redis, but it blocked..and no exception raised...just freeze
and remove spawn method ,it will worked..
i feel confuse what happened, plz help!
thk u!
More information about the Python-list
mailing list