This commit is contained in:
Administrator
2023-09-27 21:58:38 +03:00
parent cdfe18f6b7
commit 9a7581cfdf
17 changed files with 181 additions and 2 deletions

View File

@@ -0,0 +1,31 @@
import datetime
from time import sleep
import croniter
from django.core.management import BaseCommand
from django.utils import timezone
from requests import get
from stats.models import Snapshot
from web.models import Project
class Command(BaseCommand):
def handle(self, *args, **options):
while True:
for project in Project.objects.filter(next_stats_fetch_time__lte=timezone.now()):
if project.stats_enabled:
if not project.stats_link:
continue
try:
response = get(project.stats_link)
except:
continue
if response.status_code != 200:
continue
Snapshot.objects.create(project=project, data=response.json())
cron = croniter.croniter(project.stats_cron, timezone.now())
next_date = cron.get_next(datetime.datetime)
project.next_stats_fetch_time = next_date
project.save()
sleep(5 * 60)