import datetime import os import redis import sentry_sdk from ddtrace import patch_all, tracer from src.clean import MODEL_MAP from src.config import config from src.logger import logger from src.main_db import clear_table, clear_table_by_chunks from src.utils.common import is_huge_table, lock, time_logger if os.environ.get("DATADOG_SERVICE_NAME"): patch_all() else: tracer.enabled = False sentry = None try: if config.ENVIRONMENT != "local": sentry_sdk.init(dsn=config.SENTRY_DSN, environment=config.ENVIRONMENT) sentry = sentry_sdk except sentry_sdk.utils.BadDsn: pass redis_client = redis.StrictRedis(config.REDIS_HOST, config.REDIS_PORT) @lock(logger, redis_client, config, sentry=sentry) @time_logger(logger, config.APP_INSTANCE_KEY) def handler(): if config.MODEL_PATH in MODEL_MAP: MODEL_MAP[config.MODEL_PATH]() return min_stored_date = datetime.date.today() - datetime.timedelta(days=config.STORED_PERIOD) min_stored_datetime = datetime.datetime( year=min_stored_date.year, month=min_stored_date.month, day=min_stored_date.day ) if is_huge_table(config.MODEL_PATH): return clear_table_by_chunks(config.MODEL_PATH, config.FILTER_BY, min_stored_datetime) clear_table(config.MODEL_PATH, config.FILTER_BY, min_stored_datetime) if __name__ == "__main__": handler()