Directly use q_task_group
name in django-q2 ensure_scheduled
helper
This commit is contained in:
parent
bd1e009cc2
commit
eeb83388e1
@ -1,9 +1,11 @@
|
|||||||
from django_q.models import Schedule
|
from django_q.models import Schedule
|
||||||
|
|
||||||
|
|
||||||
def ensure_scheduled(name: str, func, **kwargs):
|
def ensure_scheduled(func, **kwargs):
|
||||||
|
if not hasattr(func, "q_task_group"):
|
||||||
|
raise ValueError("task func not decorated with @q_task_group")
|
||||||
Schedule.objects.update_or_create(
|
Schedule.objects.update_or_create(
|
||||||
name=name,
|
name=func.q_task_group,
|
||||||
defaults={
|
defaults={
|
||||||
"func": f"{func.__module__}.{func.__qualname__}",
|
"func": f"{func.__module__}.{func.__qualname__}",
|
||||||
**kwargs,
|
**kwargs,
|
||||||
|
@ -11,14 +11,12 @@ def post_migrate_callback(sender, **kwargs):
|
|||||||
from .tasks.update_doors import q_update_all_doors
|
from .tasks.update_doors import q_update_all_doors
|
||||||
|
|
||||||
ensure_scheduled(
|
ensure_scheduled(
|
||||||
q_getMessagesAllDoors.q_task_group,
|
|
||||||
q_getMessagesAllDoors,
|
q_getMessagesAllDoors,
|
||||||
schedule_type=Schedule.MINUTES,
|
schedule_type=Schedule.MINUTES,
|
||||||
minutes=15,
|
minutes=15,
|
||||||
)
|
)
|
||||||
|
|
||||||
ensure_scheduled(
|
ensure_scheduled(
|
||||||
"Update Door Controller Members and Cards",
|
|
||||||
q_update_all_doors,
|
q_update_all_doors,
|
||||||
schedule_type=Schedule.MINUTES,
|
schedule_type=Schedule.MINUTES,
|
||||||
minutes=15,
|
minutes=15,
|
||||||
|
@ -4,6 +4,7 @@ from typing import TypedDict
|
|||||||
|
|
||||||
from django_q.tasks import async_task
|
from django_q.tasks import async_task
|
||||||
|
|
||||||
|
from cmsmanage.django_q2_helper import q_task_group
|
||||||
from doorcontrol.hid.Credential import Credential
|
from doorcontrol.hid.Credential import Credential
|
||||||
from doorcontrol.hid.DoorController import ROOT, E
|
from doorcontrol.hid.DoorController import ROOT, E
|
||||||
from doorcontrol.models import AttributeScheduleRule, Door, FlagScheduleRule
|
from doorcontrol.models import AttributeScheduleRule, Door, FlagScheduleRule
|
||||||
@ -266,6 +267,7 @@ def update_door(door: Door, dry_run: bool = False):
|
|||||||
# TODO: delete cardholders that are no longer members?
|
# TODO: delete cardholders that are no longer members?
|
||||||
|
|
||||||
|
|
||||||
|
@q_task_group("Update Door Controller Members and Cards")
|
||||||
def q_update_all_doors():
|
def q_update_all_doors():
|
||||||
for door in Door.objects.all():
|
for door in Door.objects.all():
|
||||||
async_task(
|
async_task(
|
||||||
|
@ -12,26 +12,22 @@ def post_migrate_callback(sender, **kwargs):
|
|||||||
from .tasks.ucsAccounts import sync_accounts
|
from .tasks.ucsAccounts import sync_accounts
|
||||||
|
|
||||||
ensure_scheduled(
|
ensure_scheduled(
|
||||||
scrape_membershipworks.q_task_group,
|
|
||||||
scrape_membershipworks,
|
scrape_membershipworks,
|
||||||
schedule_type=Schedule.HOURLY,
|
schedule_type=Schedule.HOURLY,
|
||||||
)
|
)
|
||||||
|
|
||||||
ensure_scheduled(
|
ensure_scheduled(
|
||||||
scrape_events.q_task_group,
|
|
||||||
scrape_events,
|
scrape_events,
|
||||||
schedule_type=Schedule.HOURLY,
|
schedule_type=Schedule.HOURLY,
|
||||||
)
|
)
|
||||||
|
|
||||||
ensure_scheduled(
|
ensure_scheduled(
|
||||||
sync_accounts.q_task_group,
|
|
||||||
sync_accounts,
|
sync_accounts,
|
||||||
schedule_type=Schedule.MINUTES,
|
schedule_type=Schedule.MINUTES,
|
||||||
minutes=15,
|
minutes=15,
|
||||||
)
|
)
|
||||||
|
|
||||||
ensure_scheduled(
|
ensure_scheduled(
|
||||||
sync_accounts.q_task_group,
|
|
||||||
send_survey_emails,
|
send_survey_emails,
|
||||||
schedule_type=Schedule.HOURLY,
|
schedule_type=Schedule.HOURLY,
|
||||||
)
|
)
|
||||||
|
@ -6,6 +6,7 @@ from django.conf import settings
|
|||||||
from django.core import mail
|
from django.core import mail
|
||||||
from django.db.models.functions import Now
|
from django.db.models.functions import Now
|
||||||
|
|
||||||
|
from cmsmanage.django_q2_helper import q_task_group
|
||||||
from cmsmanage.email import TemplatedMultipartEmail
|
from cmsmanage.email import TemplatedMultipartEmail
|
||||||
from membershipworks.models import EventExt
|
from membershipworks.models import EventExt
|
||||||
|
|
||||||
@ -58,6 +59,7 @@ class EventSurveyEmail(TemplatedMultipartEmail):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@q_task_group("Send Event Survey Emails")
|
||||||
def send_survey_emails():
|
def send_survey_emails():
|
||||||
with mail.get_connection() as conn:
|
with mail.get_connection() as conn:
|
||||||
for event in EventExt.objects.filter(
|
for event in EventExt.objects.filter(
|
||||||
|
Loading…
Reference in New Issue
Block a user