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()
        ))
예제 #4
0
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))
예제 #5
0
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)