Automate cron_config.py file creation

This commit is contained in:
Antoine Nguyen
2026-01-13 10:10:05 +01:00
parent 5dc1cfea86
commit 0ea42129ef
3 changed files with 44 additions and 5 deletions
+13
View File
@@ -3,6 +3,7 @@
import getpass
import os
from os.path import isfile
import random
import shutil
import subprocess
import sys
@@ -259,6 +260,18 @@ class DeployCommand(Command):
shutil.copyfile(f"{self._templates_dir}/urls.py.tpl", f"{path}/urls.py")
os.mkdir(f"{parsed_args.name}/media")
hour = random.randint(0, 6)
tpl = self._render_template(
f"{self._templates_dir}/cron_config.py.tpl",
{
"minute": random.randint(1, 59),
"hour_start": hour,
"hour_end": hour + 12,
},
)
with open(f"{path}/cron_config.py", "w") as fp:
fp.write(tpl)
if isfile(f"{path}/settings.pyc"):
os.unlink(f"{path}/settings.pyc")
self._exec_django_command("migrate", parsed_args.name, "--noinput")
@@ -0,0 +1,30 @@
from rq.cron import register
from django.conf import settings
from modoboa.amavis import jobs as amavis_jobs
from modoboa.calendars import jobs as calendars_jobs
from modoboa.core import jobs as core_jobs
from modoboa.admin import jobs as admin_jobs
from modoboa.maillog import jobs as maillog_jobs
register(core_jobs.clean_logs, queue_name="modoboa", cron="0 0 * * *")
register(
core_jobs.communicate_with_public_api,
queue_name="modoboa",
cron="{{ minute }} {{ hour_start }},{{ hour_end }} * * *",
)
register(admin_jobs.handle_mailbox_operations, queue_name="dovecot", cron="* * * * *")
register(admin_jobs.handle_dns_checks, queue_name="modoboa", cron="* * * * *")
register(maillog_jobs.logparser, queue_name="modoboa", cron="*/5 * * * *")
register(maillog_jobs.update_statistics, queue_name="modoboa", cron="0 * * * *")
register(calendars_jobs.generate_rights, queue_name="modoboa", cron="*/2 * * * *")
if "modoboa.amavis" in settings.MODOBOA_APPS:
register(amavis_jobs.qcleanup, queue_name="modoboa", cron="0 0 * * *")
register(amavis_jobs.amnotify, queue_name="modoboa", cron="0 12 * * *")
+1 -5
View File
@@ -1,5 +1,3 @@
import random
from rq.cron import register
from django.conf import settings
@@ -14,12 +12,10 @@ from modoboa.maillog import jobs as maillog_jobs
register(core_jobs.clean_logs, queue_name="modoboa", cron="0 0 * * *")
# Random start for this one to avoid a DDoS on the API...
minute = random.randint(1, 59)
hour = random.randint(0, 6)
register(
core_jobs.communicate_with_public_api,
queue_name="modoboa",
cron=f"{minute} {hour},{hour + 12} * * *",
cron="12 2,14 * * *",
)
register(admin_jobs.handle_mailbox_operations, queue_name="dovecot", cron="* * * * *")