def run(dry_run): packages = db.all_packages() logger.info('--- DELETE running! ---') total_deleted = 0 final_status = [ 'Entrega Efetuada', 'Objeto entregue ao destinatário', 'Objeto apreendido por órgão de fiscalização', 'Objetvo devolvido', 'Objetvo roubado', 'Aguardando recebimento pelo ECT.', 'Objeto não localizado no fluxo postal.', 'Delivered', ] for elem in track(list(packages), description="Processing..."): code = elem['code'] time_diff = int(time() - float(elem['time'])) latest_status = elem['stat'][-1] if (any(status in latest_status for status in final_status) and time_diff > int_del or time_diff > 2 * int_del): if not dry_run: db.delete_package(elem['code']) logger.info("%s\t%s\t%r", datetime.now(), elem['code'], latest_status) total_deleted += 1 logger.info("Total of packages deleted: %s", total_deleted)
def count_packages(): ''' Count total packages and packages per status ''' cursor = db.all_packages() pkg_status = defaultdict(int) for elem in cursor: if len(elem['code']) > 13: pkg_status['trackingmore'] += 1 if 'Aguardando recebimento pel' in str(elem): pkg_status['wait'] += 1 else: pkg_status['qtd'] += 1 if 'Aguardando pagamento do despacho postal' in str(elem): pkg_status['despacho'] += 1 if 'Liberado sem tributação' in str(elem): pkg_status['sem_imposto'] += 1 if 'Objeto recebido pelos Correios do Brasil' in str(elem): pkg_status['importado'] += 1 if 'Fiscalização Aduaneira finalizada' in str(elem): pkg_status['tributado'] += 1 if 'Objeto roubado' in str(elem): pkg_status['extraviado'] += 1 return pkg_status
else: logger_info.info(str(datetime.now()) + '\tCorreios indisponível') return False if __name__ == '__main__': #sleep(60*int(multiple)) logger_info = logging.getLogger('InfoLogger') handler_info = logging.FileHandler(LOG_ALERTS_FILE) logger_info.setLevel(logging.DEBUG) logger_info.addHandler(handler_info) sentry_url = config['SENTRY']['url'] if sentry_url: sentry_sdk.init(sentry_url) cursor1 = db.all_packages() start = time() sent = 1 if check_system(): pass else: sys.exit() for elem in cursor1: try: if elem['code'][5] != multiple: continue now = time() timediff = int(now) - int(start) #if timediff > 800: # logger_info.info(str(datetime.now()) + '\t' + multiple + '\tRoutine too long') # break