コード例 #1
0
def flushsquid():
    prefix = request.query.jsoncallback
    RawUrls = request.query.urls
    urlstype = int(request.query.urlstype)    
    LogKeyName = "key"+str(request.query.key)
    
    if RawUrls.strip() == "":
	DataDict = {'success':'0','text':'请输入需要刷新的URLS列表!'}    
	return prefix+"("+ujson.encode(DataDict)+")"
    else:
       RawUrls = RawUrls.strip(",") 
    
    UrlsList = RawUrls.split(",")
    
    QuitFlag = False
    PathList = []
    
    #判断收到的URL是否是同域名下同类型的URL(同是文件或目录)
    FirstUrl = UrlsList[0]
    proto,rest = urllib.splittype(FirstUrl)
    DomainName,path = urllib.splithost(rest)
    if "." in path:
        UrlType = "file"
    else:
        UrlType = "dir"
            
    for url in UrlsList:
        proto,rest = urllib.splittype(url)
        Thost,Tpath = urllib.splithost(rest)
        if "." in Tpath:
            TUrlType = "file"
        else:
            TUrlType = "dir"
        if DomainName != Thost or UrlType != TUrlType:
            QuitFlag = True
            break
        else:
            PathList.append(Tpath)

    if QuitFlag == False:
        try:
            #调用刷新类
            PurgeCacheObj =  exeCachePurge(UrlType,PathList,DomainName,LogKeyName)
            PurgeCacheObj.start()
        except Exception,e:
            DataDict =  {'success':'0','text':'%s'%e}
        else:
            DataDict =  {'success':'1'}
コード例 #2
0
redata = redis.Redis(connection_pool=redispool)
redpipe = redata.pipeline()
for i in xrange(public.PerHandleNum):
    redpipe.lpop(public.PendingHandleListName)
PathsList = redpipe.execute()

#规范及分离数据
PathsList_NoNone = [i for i in PathsList if i]

if len(PathsList_NoNone) == 0:
    logger.info("NO HAVE PATHS NEED TO PURGE")
    sys.exit()
else:
    FilePathsList = [i for i in PathsList_NoNone if "." in i]
    FilePathsList = [
        i for i in FilePathsList
        if "A0.xml" not in i and "A05.xml" not in i and "A0A.xml" not in i
    ]
    DirPathsList = [i for i in PathsList_NoNone if "." not in i]

try:
    if len(FilePathsList) != 0:
        PurgeFilesObj = exeCachePurge("file", FilePathsList)
        PurgeFilesObj.start()
    if len(DirPathsList) != 0:
        PurgeDirsObj = exeCachePurge("dir", DirPathsList)
        PurgeDirsObj.start()
except Exception, e:
    logger.error("PURGE SQUID AND CDN EXECEPTION,%s" % e)
    sys.exit()
コード例 #3
0
#获取待处理队列中数据
redispool = redis.ConnectionPool(host=public.RedisIP,port=public.RedisPort,db=0)
redata = redis.Redis(connection_pool=redispool)
redpipe = redata.pipeline()
for i in xrange(public.PerHandleNum):
    redpipe.lpop(public.PendingHandleListName)
PathsList = redpipe.execute()

#规范及分离数据
PathsList_NoNone = [i for i in PathsList if i]

if len(PathsList_NoNone) == 0:
    logger.info("NO HAVE PATHS NEED TO PURGE")
    sys.exit()
else:
    FilePathsList = [i for i in PathsList_NoNone if "." in i]
    FilePathsList = [i for i in FilePathsList if "A0.xml" not in i and "A05.xml" not in i and "A0A.xml" not in i]
    DirPathsList = [i for i in PathsList_NoNone if "." not in i]

try:
    if len(FilePathsList) != 0:
        PurgeFilesObj =  exeCachePurge("file",FilePathsList)
        PurgeFilesObj.start()
    if  len(DirPathsList) != 0:
        PurgeDirsObj = exeCachePurge("dir",DirPathsList)
        PurgeDirsObj.start()
except Exception,e:
    logger.error("PURGE SQUID AND CDN EXECEPTION,%s"%e)    
    sys.exit()