簡單業務使用,複雜請轉移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