def test_create_reports_for_missed_days_2(self): new_runs = list(RunReport.create_reports_for_missed_days( self.reports[2], self.session )) assert_equals(set([r.created for r in new_runs]), set([ self.today - timedelta(days=1), self.today - timedelta(days=2), ]))
def test_create_reports_for_missed_days_2(self): self.add_runs_to_report(2) new_runs = list( RunReport.create_reports_for_missed_days( self.reports[2], self.session, no_more_than=self.no_more_than)) assert_equals( set([r.created for r in new_runs]), set([ self.today - timedelta(days=m) for m in self.missed_by_index[2] ]))
def recurring_reports(report_id=None): from wikimetrics.configurables import db from wikimetrics.models import ReportStore, RunReport replication_lag_service = ReplicationLagService() if replication_lag_service.is_any_lagged(): task_logger.warning( 'Replication lag detected. ' 'Hence, skipping creating new recurring reports.' ) return try: session = db.get_session() query = session.query(ReportStore) \ .filter(ReportStore.recurrent) \ if report_id is not None: query = query.filter(ReportStore.id == report_id) for report in query.all(): try: task_logger.info('Running recurring report "{0}"'.format(report)) no_more_than = queue.conf.get('MAX_INSTANCES_PER_RECURRENT_REPORT') kwargs = dict() if no_more_than: kwargs['no_more_than'] = no_more_than days_to_run = RunReport.create_reports_for_missed_days( report, session, **kwargs ) for day_to_run in days_to_run: day_to_run.task.delay(day_to_run) except Exception: task_logger.error('Problem running recurring report "{}": {}'.format( report, traceback.format_exc() )) except Exception: task_logger.error('Problem running recurring reports: {}'.format( traceback.format_exc() ))
def recurring_reports(): from wikimetrics.configurables import db from wikimetrics.models import PersistentReport, RunReport try: session = db.get_session() recurrent_reports = session.query(PersistentReport) \ .filter(PersistentReport.recurrent) \ .all() for report in recurrent_reports: try: task_logger.info('Running recurring report "{0}"'.format(report)) days_to_run = RunReport.create_reports_for_missed_days(report, session) for day_to_run in days_to_run: day_to_run.task.delay(day_to_run) except Exception, e: task_logger.error('Problem running recurring report "{0}": {1}'.format( report, e )) except Exception, e: task_logger.error('Problem running recurring reports: {0}'.format(e))
def recurring_reports(report_id=None): from wikimetrics.configurables import db from wikimetrics.models import ReportStore, RunReport try: session = db.get_session() query = session.query(ReportStore) \ .filter(ReportStore.recurrent) \ if report_id is not None: query = query.filter(ReportStore.id == report_id) for report in query.all(): try: task_logger.info('Running recurring report "{0}"'.format(report)) days_to_run = RunReport.create_reports_for_missed_days(report, session) for day_to_run in days_to_run: day_to_run.task.delay(day_to_run) except Exception, e: task_logger.error('Problem running recurring report "{0}": {1}'.format( report, e )) except Exception, e: task_logger.error('Problem running recurring reports: {0}'.format(e))
def test_create_reports_for_missed_days_3(self): self.add_runs_to_report(3) new_runs = list( RunReport.create_reports_for_missed_days( self.reports[3], self.session, no_more_than=self.no_more_than)) assert_equals(len(new_runs), self.no_more_than)