Skip to content

Commit

Permalink
add cron to trigger internal api
Browse files Browse the repository at this point in the history
  • Loading branch information
danangmassandy committed Oct 15, 2024
1 parent e39951b commit 4e59ade
Show file tree
Hide file tree
Showing 4 changed files with 69 additions and 2 deletions.
3 changes: 2 additions & 1 deletion deployment/docker/requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -43,4 +43,5 @@ openpyxl==3.1.2
# zipfly
zipfly==6.0.5
human-readable==1.3.4
djangorestframework-csv==3.0.2
djangorestframework-csv==3.0.2
uwsgi-tools==1.1.1
26 changes: 25 additions & 1 deletion django_project/dashboard/apps.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,20 @@ def create_clear_dashboard_session_periodic_task():
PeriodicTask = (
import_module('django_celery_beat.models').PeriodicTask
)
schedule, created = IntervalSchedule.objects.get_or_create(
schedule, _ = IntervalSchedule.objects.get_or_create(
every=7,
period=IntervalSchedule.DAYS
)

sched_storage_checker, _ = IntervalSchedule.objects.get_or_create(
every=15,
period=IntervalSchedule.MINUTES
)

sched_log_cleaner, _ = IntervalSchedule.objects.get_or_create(
every=14,
period=IntervalSchedule.DAYS
)
except Exception as e:
print(e)
return
Expand All @@ -29,6 +39,20 @@ def create_clear_dashboard_session_periodic_task():
'interval': schedule
}
)
PeriodicTask.objects.update_or_create(
task='trigger_storage_checker_api',
defaults={
'name': 'Check storage django container',
'interval': sched_storage_checker
}
)
PeriodicTask.objects.update_or_create(
task='clean_old_storage_log',
defaults={
'name': 'Clean storage log',
'interval': sched_log_cleaner
}
)
except ValidationError as e:
print(e)

Expand Down
1 change: 1 addition & 0 deletions django_project/dashboard/tasks/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@
from .review import * # noqa
from .upload import * # noqa
from .batch_edit import * # noqa
from .maintenance import * # noqa
41 changes: 41 additions & 0 deletions django_project/dashboard/tasks/maintenance.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
import logging
from uwsgi_tools.curl import curl
from celery import shared_task
from django.utils import timezone
from datetime import timedelta
from core.models.preferences import SitePreferences
from dashboard.models.maintenance import StorageLog


logger = logging.getLogger(__name__)
REMOVE_AFTER_DAYS = 14


@shared_task(name="trigger_storage_checker_api", ignore_result=True)
def trigger_storage_checker_api():
pref = SitePreferences.preferences()
if not pref.storage_checker_config:
return
api_key = pref.storage_checker_config.get('api_key', None)
user = pref.storage_checker_config.get('user', None)
host = 'django:8080'
endpoint_url = pref.storage_checker_config.get(
'endpoint_url',
'/api/maintenance/check-storage-usage/'
)
if api_key is None or user is None:
return

headers = (
f'Authorization: Bearer {api_key}',
f'GEOREPO_USER_KEY: {user}',
)
curl(host, endpoint_url, headers=headers)


@shared_task(name="clean_old_storage_log")
def clean_old_storage_log():
datetime_filter = timezone.now() - timedelta(days=REMOVE_AFTER_DAYS)
StorageLog.objects.filter(
date_time__lte=datetime_filter
).delete()

0 comments on commit 4e59ade

Please sign in to comment.