diff --git a/docker-compose.yml b/docker-compose.yml index 1c3df18..a7b1aca 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -83,6 +83,21 @@ services: networks: - melnichanka + beat: + build: . + command: celery -A melnichanka beat -l info + restart: on-failure + env_file: + - .env + volumes: + - .:/app + - ./makedoc/tempdoc:/app/makedoc/tempdoc + depends_on: + - db + - rabbitmq + networks: + - melnichanka + redis: image: redis:7.2.5-alpine hostname: redis diff --git a/makedoc/tasks.py b/makedoc/tasks.py new file mode 100644 index 0000000..44ef499 --- /dev/null +++ b/makedoc/tasks.py @@ -0,0 +1,22 @@ +import os +import shutil + +from celery import shared_task +from django.conf import settings + + +@shared_task +def delete_files(): + directory = settings.BASE_DIR / "makedoc" / "tempdoc" + + if not os.path.exists(directory): + return "Directory does not exist" + for item in os.listdir(directory): + item_path = os.path.join(directory, item) + try: + if os.path.isdir(item_path): + shutil.rmtree(item_path) + except Exception as e: + return f"Failed to delete {item_path}. Reason {e}" + + return "Successfully deleted all user folders" diff --git a/melnichanka/settings.py b/melnichanka/settings.py index 97f5086..973f7e2 100644 --- a/melnichanka/settings.py +++ b/melnichanka/settings.py @@ -14,6 +14,7 @@ from datetime import timedelta from pathlib import Path +from celery.schedules import crontab from dotenv import load_dotenv load_dotenv() @@ -190,7 +191,7 @@ } SIMPLE_JWT = { - "ACCESS_TOKEN_LIFETIME": timedelta(minutes=30), + "ACCESS_TOKEN_LIFETIME": timedelta(minutes=60), "REFRESH_TOKEN_LIFETIME": timedelta(days=10), "ROTATE_REFRESH_TOKENS": True, "BLACKLIST_AFTER_ROTATION": True, @@ -215,3 +216,12 @@ "VERSION": "1.0.0", "SERVE_INCLUDE_SCHEMA": False, } + +# Celery + +CELERY_BEAT_SCHEDULE = { + "delete_files_daily": { + "task": "makedoc.tasks.delete_files", + "schedule": crontab(hour=23, minute=59), + }, +}