4 @link: http://hierarchical-cluster-engine.com/ 5 @copyright: Copyright © 2013-2014 IOIX Ukraine 6 @license: http://hierarchical-cluster-engine.com/license/ 25 def __init__(self, keyValueStorageDir, rawDataDir, dBDataTask):
26 super(URLUpdateTask, self).
__init__()
35 def process(self, urlUpdates, queryCallback):
38 for urlUpdate
in urlUpdates:
40 if urlUpdate.siteId ==
"":
41 urlUpdate.siteId =
"0" 42 if not hasattr(urlUpdate,
"urlMd5"):
43 urlUpdate.fillMD5(urlUpdate.url, urlUpdate.type)
44 if self.
isSiteExist(urlUpdate.siteId, queryCallback):
46 status = self.
updateURL(urlUpdate, queryCallback)
47 if status
and urlUpdate.attributes
is not None and len(urlUpdate.attributes) > 0:
49 ret.statuses.append(status)
50 if "urlPut" in urlUpdate.__dict__
and urlUpdate.urlPut
is not None:
61 SQL_SELECT_STATUS_TEMPLATE =
"SELECT `Status` FROM `%s` WHERE `URLMD5` = '%s'" 62 tableName = Constants.DC_URLS_TABLE_NAME_TEMPLATE % urlUpdate.siteId
63 query = SQL_SELECT_STATUS_TEMPLATE % (tableName, urlUpdate.urlMd5)
64 ret = queryCallback(query, Constants.SECONDARY_DB_ID)
65 if ret
is not None and len(ret) > 0
and len(ret[0]) > 0
and ret[0][0]
is not None:
66 prevStatus = int(ret[0][0])
67 StatisticLogManager.statisticUpdate(queryCallback, Constants.StatFreqConstants.FREQ_UPDATE, 1,
68 urlUpdate.siteId, urlUpdate.urlMd5)
69 StatisticLogManager.logUpdate(queryCallback,
"LOG_UPDATE", urlUpdate, urlUpdate.siteId, urlUpdate.urlMd5)
70 if prevStatus
is None or prevStatus != urlUpdate.status:
71 self.
statisticLogUpdate(urlUpdate, urlUpdate.urlMd5, urlUpdate.siteId, urlUpdate.status, queryCallback)
80 SQL_UPDATE_URLSITE_TEMPLATE =
"UPDATE IGNORE `%s` SET %s" 81 if urlUpdate.eTag
is not None:
82 urlUpdate.eTag = urlUpdate.eTag.strip(
"\"'")
83 fields, values = Constants.getFieldsValuesTuple(urlUpdate, Constants.URLTableDict)
84 fieldValueString = Constants.createFieldsValuesString(fields, values, Constants.urlExcludeList)
85 if fieldValueString
and len(fieldValueString) > 0:
86 tableName = Constants.DC_URLS_TABLE_NAME_TEMPLATE % urlUpdate.siteId
87 query = SQL_UPDATE_URLSITE_TEMPLATE % (tableName, fieldValueString)
89 if urlUpdate.urlMd5
is not None:
90 additionWhere = (
"`URLMD5` = '%s'" % urlUpdate.urlMd5)
92 if len(additionQueryStr) > 0:
94 query += additionQueryStr
95 queryCallback(query, Constants.SECONDARY_DB_ID)
106 if urlPutObject.siteId
is None and urlObject.siteId
is not None:
107 urlPutObject.siteId = urlObject.siteId
108 logger.debug(
">>> URLPut.siteId is None and set to the = " + urlPutObject.siteId)
109 if urlPutObject.urlMd5
is None and urlObject.urlMd5
is not None:
110 urlPutObject.urlMd5 = urlObject.urlMd5
111 logger.debug(
">>> URLPut.urlMd5 is None and set to the = " + urlPutObject.urlMd5)
112 logger.debug(
">>> Call internal URLPut")
121 logger.debug(
">>> URLUpdateTask.attributesUpdate (len) = " + str(len(attributes)))
123 res = attrUpdateTask.process(attributes, queryCallback)
124 logger.debug(
">>> URLUpdateTask.attributesUpdate (res) == " + str(res))
def isSiteExist(self, siteId, queryCallback, userId=None)
def urlPutOperation(self, urlObject, urlPutObject, queryCallback)
def process(self, urlUpdates, queryCallback)
GeneralResponse event object, represents general state response for multipurpose usage.
def statisticUpdate(self, urlUpdate, queryCallback)
def attributesUpdate(self, attributes, queryCallback)
def statisticLogUpdate(self, localObj, urlMd5, siteId, status, queryCallback, isInsert=False)
def updateURL(self, urlUpdate, queryCallback)
def generateCriterionSQL(self, criterions, additionWhere=None, siteId=None)
def __init__(self, keyValueStorageDir, rawDataDir, dBDataTask)