Add Celery periodic task for deactivating expired devices and update requirements
Some checks failed
Build and Push Docker Images / Build and Push Docker Images (push) Failing after 11m3s

This commit is contained in:
2025-04-24 13:05:20 +05:00
parent 99982d13d5
commit 0f19f0c15c
5 changed files with 26 additions and 10 deletions

View File

@ -1,6 +1,7 @@
import os
from celery import Celery
from celery.schedules import crontab
# Set the default Django settings module for the 'celery' program.
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "apibase.settings")
@ -17,6 +18,15 @@ app.config_from_object("django.conf:settings", namespace="CELERY")
app.autodiscover_tasks(["api", "devices"])
# Add periodic task scheduler
app.conf.beat_schedule = {
"deactivate-expired-devices-every-day": {
"task": "api.tasks.deactivate_expired_devices",
"schedule": crontab(hour=0, minute=0), # Runs daily at midnight
},
}
@app.task(bind=True, ignore_result=True)
def debug_task(self):
print(f"Request: {self.request!r}")

View File

@ -28,9 +28,9 @@ env.read_env(os.path.join(BASE_DIR, ".env"))
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = env("SECRET_KEY", default=get_random_secret_key())
DEBUG = env.bool("DJANGO_DEBUG", default=True)
DEBUG = env.bool("DJANGO_DEBUG", default=True) # type: ignore
ALLOWED_HOSTS = env.list("ALLOWED_HOSTS", default=[])
ALLOWED_HOSTS = env.list("ALLOWED_HOSTS", default=[]) # type: ignore
if DEBUG:
@ -68,6 +68,7 @@ INSTALLED_APPS = [
# third party
"django_filters",
"corsheaders",
"django_celery_beat",
]
if DEBUG:
@ -123,10 +124,10 @@ if not DEBUG:
SECURE_SSL_REDIRECT = env("DJANGO_SECURE_SSL_REDIRECT", cast=bool)
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
SECURE_HSTS_SECONDS = env("SECURE_HSTS_SECONDS", default=3600, cast=int)
SECURE_HSTS_SECONDS = env("SECURE_HSTS_SECONDS", default=3600, cast=int) # type: ignore
SECURE_HSTS_INCLUDE_SUBDOMAINS = True
SECURE_HSTS_PRELOAD = True
CSRF_TRUSTED_ORIGINS = env.list("CSRF_TRUSTED_ORIGINS", default=[])
CSRF_TRUSTED_ORIGINS = env.list("CSRF_TRUSTED_ORIGINS", default=[]) # type: ignore
SECURE_PROXY_SSL_HEADER = ("HTTP_X_FORWARDED_PROTO", "https")
SECURE_BROWSER_XSS_FILTER = True
X_FRAME_OPTIONS = "DENY"
@ -162,7 +163,7 @@ CACHES = {
else "django.core.cache.backends.locmem.LocMemCache"
),
"LOCATION": (
env("REDIS_URL", default="redis://redis:6379/") if not DEBUG else ""
env("REDIS_URL", default="redis://redis:6379/") if not DEBUG else "" # type: ignore
),
"OPTIONS": (
{
@ -347,10 +348,10 @@ logging.config.dictConfig(
EMAIL_BACKEND = (
"django.core.mail.backends.smtp.EmailBackend" # Replace with your preferred backend
)
EMAIL_HOST = env("EMAIL_HOSTNAME", default="")
EMAIL_PORT = env("EMAIL_PORT", cast=int, default=25)
EMAIL_HOST_USER = env("EMAIL_USERNAME", default="")
EMAIL_HOST_PASSWORD = env("EMAIL_PASSWORD", default="")
EMAIL_HOST = env("EMAIL_HOSTNAME", default="") # type: ignore
EMAIL_PORT = env("EMAIL_PORT", cast=int, default=25) # type: ignore
EMAIL_HOST_USER = env("EMAIL_USERNAME", default="") # type: ignore
EMAIL_HOST_PASSWORD = env("EMAIL_PASSWORD", default="") # type: ignore
# DEFAULT_FROM_EMAIL = "noreply@sarlink.net"
EMAIL_USE_TLS = True