| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- """Scan Tencent official dynamic creative review results.
- Run every 2 hours in production. This scanner only reads submitted creatives
- from DB and writes official review results/rejection facts back to DB.
- """
- import json
- import logging
- import os
- import sys
- from pathlib import Path
- _HERE = Path(__file__).parent
- sys.path.insert(0, str(_HERE.parent.parent))
- sys.path.insert(0, str(_HERE))
- from dotenv import load_dotenv # noqa: E402
- load_dotenv(_HERE / ".env")
- while str(_HERE) in sys.path:
- sys.path.remove(str(_HERE))
- sys.path.insert(0, str(_HERE))
- from tools.creative_review import scan_pending_reviews # noqa: E402
- logger = logging.getLogger("scan_creative_reviews")
- def _setup_logging() -> None:
- logging.basicConfig(
- level=os.getenv("LOG_LEVEL", "INFO"),
- format="%(asctime)s | %(levelname)s | %(name)s | %(message)s",
- datefmt="%H:%M:%S",
- )
- for noisy in ("httpx", "httpcore", "config", "db.config"):
- logging.getLogger(noisy).setLevel(logging.WARNING)
- try:
- from tools.sls_setup import attach_sls_handler
- attach_sls_handler()
- except Exception as e:
- logger.warning("[sls] 挂载异常(降级为本地 only):%s", e)
- def main() -> int:
- _setup_logging()
- lookback_hours = int(os.getenv("CREATIVE_REVIEW_LOOKBACK_HOURS", "72"))
- limit = int(os.getenv("CREATIVE_REVIEW_SCAN_LIMIT", "1000"))
- batch_size = int(os.getenv("CREATIVE_REVIEW_BATCH_SIZE", "100"))
- logger.info(
- "[creative_review] 扫描启动 lookback_hours=%d limit=%d batch_size=%d",
- lookback_hours, limit, batch_size,
- )
- summary = scan_pending_reviews(
- lookback_hours=lookback_hours,
- limit=limit,
- batch_size=batch_size,
- )
- logger.info(
- "[creative_review] 扫描完成 %s",
- json.dumps(summary, ensure_ascii=False),
- )
- return 0 if not summary.get("errors") else 1
- if __name__ == "__main__":
- sys.exit(main())
|