redis隊列使用

簡單業務使用,複雜請轉移kafka,rabbitmq,rocketmq等隊列中間件。

#酌情選擇是否用多線程消費,python的多線程一般。
import threading
import time
import redis
import sys
import urllib2
import datetime
reload(sys)
sys.setdefaultencoding( "utf-8" )

#連接redis
r = redis.StrictRedis(host="*.*.*.*",port=****,db=0,password='***');
#消費者接口
url=''
#python訪問方法
def sendReq(myurl):
    url = myurl
    retJson = urllib2.urlopen(url).read()
    print retJson


while 1 = 1:
  #此redis key由提供者寫入
  info =  r.rpop('pushkey')
  print(str(info))
  #如果隊列有值則消費它
  if info is not None:
   sendurl = url+'?info='+info
   resultinfo = sendReq(sendurl)

如果想加入確定因素在消費裏面可以用以下代碼,從while 1 =1:開始,上邊相同


while 1 = 1:
 try:
  #此redis key由提供者寫入
  info =  r.rpoplpush('pushkey','pushkeytemp')
  print(str(info))
  #如果隊列有值則消費它
  if info is not None:
   sendurl = url+'?info='+info
   resultinfo = sendReq(sendurl)
   #根據需要是否根據resultinfo 值來刪除備份key裏的當前值
   #沒有發生異常,則刪除掉備份key裏此值
   r.lpop('pushkeytemp')
 catch:
  #發生異常,可查看pushkeytemp的失敗值 決定是否重發
  continue

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章