コード例 #1
0
    def run(self):
        self.log.info('Starting recovery on channel %s (%s -> %s)', self.channel.id, self.start_dt, self.end_dt)

        msgs = self.channel.messages_iter(
            bulk=True,
            direction=MessageIterator.Direction.DOWN,
            after=str(from_datetime(self.start_dt))
        )

        for chunk in msgs:
            Message.from_disco_message_many(chunk, safe=True)

            if to_datetime(chunk[-1].id) > self.end_dt:
                break
コード例 #2
0
    def argument_stale_reports(self, params, reports: dict):
        r = reduce(list.__add__, reports.values()) if params[0] == "all" \
            else reports[params[0]] if params[0] in reports.keys() else []
        hours = params[1]
        target = datetime.today() - timedelta(hours=int(hours))
        target_snowflake = snowflake.from_datetime(target)

        stale_reports = []
        for report in r:
            if report.id < target_snowflake:
                if report.edited_timestamp is not None:
                    if report.edited_timestamp < target:
                        stale_reports.append(report)
                else:
                    stale_reports.append(report)

        return str(len(stale_reports))