# Based on code by Kong Luoxing 2014 import datetime from celery.beat import Scheduler, ScheduleEntry from celery import current_app import celery.schedules from pyfaf.storage.task import PeriodicTask from pyfaf.storage import DatabaseFactory db_factory = DatabaseFactory() class DBScheduleEntry(ScheduleEntry, object): def __init__(self, db_task): super(DBScheduleEntry, self).__init__() self.db_task = db_task self.app = current_app._get_current_object() #pylint: disable=protected-access self.name = db_task.name self.task = db_task.task self.enabled = db_task.enabled self.schedule = celery.schedules.crontab(minute=db_task.crontab_minute, hour=db_task.crontab_hour, day_of_week=db_task.crontab_day_of_week, day_of_month=db_task.crontab_day_of_month, month_of_year=db_task.crontab_month_of_year) self.args = db_task.args self.kwargs = db_task.kwargs
from celery import Celery from celery.signals import task_postrun from pyfaf.actions import actions from pyfaf.config import config from pyfaf.common import get_env_or_config from pyfaf.storage import DatabaseFactory, TaskResult from pyfaf.utils.contextmanager import captured_output_combined celery_app = Celery("pyfaf_tasks", broker=get_env_or_config("celery_tasks.broker", "RDSBROKER", ""), backend=get_env_or_config("celery_tasks.backend", "RDSBACKEND", "")) db_factory = DatabaseFactory(autocommit=True) class ActionError(Exception): def __init__(self, output) -> None: self.output = output Exception.__init__(self, output) def __str__(self) -> str: return self.output @task_postrun.connect def task_postrun_handler(_sender=None, task_id=None, task=None,