コード例 #1
0
ファイル: queues.py プロジェクト: dreamfrog/jophiel
 def pop(cls, queues, timeout=0):
     if isinstance(queues, basestring):
         queues = [queues]
     ret = cls.client.blpop(["resque:queue:%s" % q for q in queues],
                            timeout=timeout)
     if ret:
         key, ret = ret
         return key[13:], TaskMessage.decode(ret)  # trim "resque:queue:"
     else:
         return None, None
コード例 #2
0
ファイル: queues.py プロジェクト: dreamfrog/jophiel
 def next_item_for_timestamp(cls, timestamp):
     #key = int(time.mktime(timestamp.timetuple()))
     key = "resque:delayed:%s" % timestamp
     ret = cls.client.lpop(key)
     item = None
     if ret:
         item = TaskMessage.decode(ret)
     if cls.client.llen(key) == 0:
         cls.client.delete(key)
         cls.client.zrem('resque:delayed_queue_schedule', timestamp)
     return item
コード例 #3
0
ファイル: queues.py プロジェクト: dreamfrog/jophiel
 def delayed_push(cls, datetime, item):
     key = int(time.mktime(datetime.timetuple()))
     cls.client.rpush('resque:delayed:%s' % key, TaskMessage.encode(item))
     cls.client.zadd('resque:delayed_queue_schedule', key, key)
コード例 #4
0
ファイル: queues.py プロジェクト: dreamfrog/jophiel
 def list_range(cls, key, start, count):
     items = cls.client.lrange(key, start, start + count - 1) or []
     ret_list = []
     for i in items:
         ret_list.append(TaskMessage.decode(i))
     return ret_list
コード例 #5
0
ファイル: queues.py プロジェクト: dreamfrog/jophiel
 def push(cls, queue, item):
     cls.watch_queue(queue)
     cls.client.rpush("resque:queue:%s" % queue, TaskMessage.encode(item))