Skip to content

Instantly share code, notes, and snippets.

@alexcpn
Created January 20, 2016 08:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save alexcpn/48bcf43ac6d7c98f053d to your computer and use it in GitHub Desktop.
Save alexcpn/48bcf43ac6d7c98f053d to your computer and use it in GitHub Desktop.
A gevent,greenlet based simple TaskQueue
# Gevent Queue
from gevent import queue
import gevent
from enum import Enum
import time
import threading
class EventId(Enum):
event_added = 1
event_moving = 2
event_removed = 3
event_reconnected = 4
class EventHandler(object):
"""
Runs a Gevent Queue and manages the supported eventEvents, using the rules codified
"""
def __init__(self, queue):
"""
:param queue: The Gevent queue on which to work till the process dies
:return:
"""
self.queue = queue
for i in range(2):
gevent.spawn(self.queue_worker)
def do_work(self, item_in_queue):
print "#Doing some work Event=",item_in_queue[0],"Event data=",item_in_queue[1]
def queue_worker(self):
while True:
item = self.queue.get()
self.do_work(item)
def push_to_queue(queue,start,stop):
for item in range(start,stop):
queue.put((EventId.event_added,item))
gevent.sleep(0)
queue = queue.Queue()
handler = EventHandler(queue)
gevent.spawn(push_to_queue,queue,1,10)
gevent.spawn(push_to_queue,queue,11,20)
shutdown = False
starttime = time.time()
while not shutdown:
gevent.sleep(.1)
if time.time() - starttime > 3:
shutdown = True
print "Wait over"
#Doing some work Event= EventId.event_added Event data= 1
#Doing some work Event= EventId.event_added Event data= 11
#Doing some work Event= EventId.event_added Event data= 2
#Doing some work Event= EventId.event_added Event data= 12
#Doing some work Event= EventId.event_added Event data= 3
#Doing some work Event= EventId.event_added Event data= 13
#Doing some work Event= EventId.event_added Event data= 4
#Doing some work Event= EventId.event_added Event data= 14
#Doing some work Event= EventId.event_added Event data= 5
#Doing some work Event= EventId.event_added Event data= 15
#Doing some work Event= EventId.event_added Event data= 6
#Doing some work Event= EventId.event_added Event data= 16
#Doing some work Event= EventId.event_added Event data= 7
#Doing some work Event= EventId.event_added Event data= 17
#Doing some work Event= EventId.event_added Event data= 8
#Doing some work Event= EventId.event_added Event data= 18
#Doing some work Event= EventId.event_added Event data= 9
#Doing some work Event= EventId.event_added Event data= 19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment