2026-09-15 13:38:01 +08:00
|
|
|
|
from datetime import timedelta
|
|
|
|
|
|
from django.core.management.base import BaseCommand
|
|
|
|
|
|
from django.utils import timezone
|
|
|
|
|
|
from tracker.models import Site
|
|
|
|
|
|
from tracker.services.stats import refresh_daily
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Command(BaseCommand):
|
|
|
|
|
|
# 生产调度:1Panel 计划任务每日 00:10 执行
|
|
|
|
|
|
# docker exec <web容器> python manage.py refresh_stats --days 2
|
|
|
|
|
|
# (回刷含今天在内的近 N 天,详见 Task 22 README)
|
|
|
|
|
|
help = "回刷近 N 天日聚合(含今天)"
|
|
|
|
|
|
|
|
|
|
|
|
def add_arguments(self, parser):
|
|
|
|
|
|
parser.add_argument("--days", type=int, default=2)
|
|
|
|
|
|
|
|
|
|
|
|
def handle(self, *args, **opts):
|
|
|
|
|
|
today = timezone.localdate()
|
|
|
|
|
|
total = 0
|
|
|
|
|
|
for site in Site.objects.filter(is_active=True):
|
|
|
|
|
|
for i in range(opts["days"]):
|
2026-09-15 13:55:13 +08:00
|
|
|
|
refresh_daily(site, today - timedelta(days=i))
|
2026-09-15 13:38:01 +08:00
|
|
|
|
total += 1
|
|
|
|
|
|
self.stdout.write(f"refreshed {total} site-days")
|