4 HCE project, Python bindings, Distributed Tasks Manager application. 5 error-mask-info.py - cli tool to decode error mask info and output to stdout. 8 @file error-mask-info.py 9 @author Alexander Vybornyh <alexander.hce.cluster@gmail.com> 10 @link: http://hierarchical-cluster-engine.com/ 11 @copyright: Copyright © 2013-2016 IOIX Ukraine 12 @license: http://hierarchical-cluster-engine.com/license/ 24 logging.basicConfig(filename=
"../log/error-mask-info.log", filemode=
"w")
25 logger = logging.getLogger(CONSTS.LOGGER_NAME)
26 logger.setLevel(
"DEBUG")
29 MSG_ERROR_EXIT_STATUS =
"Exit failure. " 31 MSG_DEBUG_INPUT_ERROR_MASK =
"Input error mask: " 32 MSG_DEBUG_CONVERTED_MASKS =
"Converted masks: " 40 "CRAWLER-TASK-ERROR-BAD-URL" : CONSTS.ERROR_BAD_URL,
41 "CRAWLER-TASK-ERROR-REQUEST-TIMEOUT" : CONSTS.ERROR_REQUEST_TIMEOUT,
42 "CRAWLER-TASK-ERROR-HTTP-ERROR" : CONSTS.ERROR_HTTP_ERROR,
43 "CRAWLER-TASK-ERROR-EMPTY-RESPONSE" : CONSTS.ERROR_EMPTY_RESPONSE,
44 "CRAWLER-TASK-ERROR-WRONG-MIME" : CONSTS.ERROR_WRONG_MIME,
45 "CRAWLER-TASK-ERROR-CONNECTION-ERROR" : CONSTS.ERROR_CONNECTION_ERROR,
46 "CRAWLER-TASK-ERROR-PAGE-CONVERT-ERROR" : CONSTS.ERROR_PAGE_CONVERT_ERROR,
47 "CRAWLER-TASK-ERROR-ERROR-MACRO" : CONSTS.ERROR_MACRO,
48 "CRAWLER-TASK-ERROR-RESPONSE-SIZE-ERROR" : CONSTS.ERROR_RESPONSE_SIZE_ERROR,
49 "CRAWLER-TASK-ERROR-AUTH-ERROR" : CONSTS.ERROR_AUTH_ERROR,
50 "CRAWLER-TASK-ERROR-WRITE-FILE-ERROR" : CONSTS.ERROR_WRITE_FILE_ERROR,
51 "CRAWLER-TASK-ERROR-ROBOTS-NOT-ALLOW" : CONSTS.ERROR_ROBOTS_NOT_ALLOW,
52 "CRAWLER-TASK-ERROR-HTML-PARSE-ERROR" : CONSTS.ERROR_HTML_PARSE_ERROR,
53 "CRAWLER-TASK-ERROR-BAD-ENCODING" : CONSTS.ERROR_BAD_ENCODING,
54 "CRAWLER-TASK-ERROR-SITE-MAX-ERRORS" : CONSTS.ERROR_SITE_MAX_ERRORS,
55 "CRAWLER-TASK-ERROR-EMPTY-RESPONSE" : CONSTS.ERROR_EMPTY_RESPONSE,
56 "CRAWLER-TASK-ERROR_CRAWLER_FILTERS_BREAK" : CONSTS.ERROR_CRAWLER_FILTERS_BREAK,
57 "CRAWLER-TASK-ERROR-MAX-ALLOW-HTTP-REDIRECTS" : CONSTS.ERROR_MAX_ALLOW_HTTP_REDIRECTS,
58 "CRAWLER-TASK-ERROR-MAX-ALLOW-HTML-REDIRECTS" : CONSTS.ERROR_MAX_ALLOW_HTML_REDIRECTS,
59 "CRAWLER-TASK-ERROR-GENERAL-CRAWLER" : CONSTS.ERROR_GENERAL_CRAWLER,
60 "CRAWLER-TASK-ERROR-DTD-INVALID" : CONSTS.ERROR_DTD_INVALID,
61 "CRAWLER-TASK-ERROR-MACRO-DESERIALIZATION" : CONSTS.ERROR_MACRO_DESERIALIZATION,
62 "CRAWLER-TASK-ERROR-FETCH-AMBIGUOUS-REQUEST" : CONSTS.ERROR_FETCH_AMBIGUOUS_REQUEST,
63 "CRAWLER-TASK-ERROR-FETCH-CONNECTION-ERROR" : CONSTS.ERROR_FETCH_CONNECTION_ERROR,
64 "CRAWLER-TASK-ERROR-FETCH-HTTP-ERROR" : CONSTS.ERROR_FETCH_HTTP_ERROR,
65 "CRAWLER-TASK-ERROR-FETCH-INVALID-URL" : CONSTS.ERROR_FETCH_INVALID_URL,
66 "CRAWLER-TASK-ERROR-FETCH-TOO-MANY-REDIRECTS" : CONSTS.ERROR_FETCH_TOO_MANY_REDIRECTS,
67 "CRAWLER-TASK-ERROR-FETCH-CONNECTION-TIMEOUT" : CONSTS.ERROR_FETCH_CONNECTION_TIMEOUT,
68 "CRAWLER-TASK-ERROR-FETCH-READ-TIMEOUT" : CONSTS.ERROR_FETCH_READ_TIMEOUT,
69 "CRAWLER-TASK-ERROR-FETCH-TIMEOUT" : CONSTS.ERROR_FETCH_TIMEOUT,
70 "CRAWLER-TASK-FETCHER-INTERNAL-ERROR" : CONSTS.ERROR_FETCHER_INTERNAL,
73 "PROCESSOR-TASK-ERROR_MASK_SITE_MAX_RESOURCES_NUMBER" : CONSTS.ERROR_MASK_SITE_MAX_RESOURCES_NUMBER,
74 "PROCESSOR-TASK-ERROR_DATABASE_ERROR": CONSTS.ERROR_DATABASE_ERROR,
75 "PROCESSOR-TASK-ERROR_MASK_SITE_MAX_RESOURCES_SIZE" : CONSTS.ERROR_MASK_SITE_MAX_RESOURCES_SIZE,
76 "PROCESSOR-TASK-ERROR_MASK_SITE_UNSUPPORTED_CONTENT_TYPE" : CONSTS.ERROR_MASK_SITE_UNSUPPORTED_CONTENT_TYPE,
77 "PROCESSOR-TASK-ERROR_MASK_URL_ENCODING_ERROR" : CONSTS.ERROR_MASK_URL_ENCODING_ERROR,
78 "PROCESSOR-TASK-ERROR_MASK_SCRAPER_ERROR" : CONSTS.ERROR_MASK_SCRAPER_ERROR,
79 "PROCESSOR-TASK-ERROR_MASK_MISSED_RAW_CONTENT_ON_DISK" : CONSTS.ERROR_MASK_MISSED_RAW_CONTENT_ON_DISK,
80 "PROCESSOR-TASK-ERROR_RE_ERROR" : CONSTS.ERROR_RE_ERROR,
81 "PROCESSOR-TASK-ERROR_MANDATORY_TEMPLATE": CONSTS.ERROR_MANDATORY_TEMPLATE,
82 "PROCESSOR-TASK-ERROR_PROCESSOR_FILTERS_BREAK" : CONSTS.ERROR_PROCESSOR_FILTERS_BREAK,
83 "PROCESSOR-TASK-ERROR_MASK_SITE_STATE" : CONSTS.ERROR_MASK_SITE_STATE,
84 "PROCESSOR-TASK-ERROR_MAX_ITEMS" : CONSTS.ERROR_MAX_ITEMS,
85 "PROCESSOR-TASK-ERROR_MAX_URLS_FROM_PAGE" : CONSTS.ERROR_MAX_URLS_FROM_PAGE,
86 "PROCESSOR-TASK-ERROR_TEMPLATE_SOURCE" : CONSTS.ERROR_TEMPLATE_SOURCE,
89 "CRAWLER-TASK-ERROR-RSS-EMPTY": CONSTS.ERROR_RSS_EMPTY,
90 "CRAWLER-TASK-ERROR-URLS-SCHEMA-EXTERNAL": CONSTS.ERROR_URLS_SCHEMA_EXTERNAL,
91 "CRAWLER-TASK-ERROR-NOT-EXIST-ANY-VALID-PROXY": CONSTS.ERROR_NOT_EXIST_ANY_VALID_PROXY,
92 "CRAWLER-TASK-ERROR-FETCH-FORBIDDEN": CONSTS.ERROR_FETCH_FORBIDDEN,
93 "CRAWLER-TASK-ERROR-NO-TIME-WINDOW": CONSTS.ERROR_NO_TIME_WINDOW,
94 "ERROR_CRAWLER_FATAL_INITIALIZATION_PROJECT_ERROR": CONSTS.ERROR_CRAWLER_FATAL_INITIALIZATION_PROJECT_ERROR,
95 "ERROR_PROCESSOR_BATCH_ITEM_PROCESS": CONSTS.ERROR_PROCESSOR_BATCH_ITEM_PROCESS,
96 "ERROR_MAX_EXECUTION_TIME": CONSTS.ERROR_MAX_EXECUTION_TIME
102 if len(sys.argv) == 2:
104 error_mask = int(sys.argv[1])
106 print "error mask must be integer" 109 print "Usage: ./error-mask-info.py <error mask>" 111 logger.debug(MSG_DEBUG_INPUT_ERROR_MASK +
'\n' + str(error_mask))
117 masks = {
"errors":[]}
118 logger.debug(
"defined_masks: %s", str(defined_masks))
119 logger.debug(
"error_mask: %s", str(
type(error_mask)))
120 for key
in defined_masks:
121 if defined_masks[key] & error_mask:
122 masks[
"errors"].append(key)
125 logger.debug(MSG_DEBUG_CONVERTED_MASKS +
'\n' + str(masks))
127 print "Mask " + str(error_mask) +
" not defined both CrawlerTask or ProcessorTask" 129 return json.dumps(masks)
134 if __name__ ==
"__main__":
136 exit_status = STATUS_SUCCESS
140 except Exception, err:
141 tbi = Utils.getTracebackInfo()
142 logger.error(MSG_ERROR_EXIT_STATUS + err.message +
'\n' + tbi)
143 exit_status = STATUS_FAILURE
def convertMask(error_mask)