import time
import sys
import redis

sys.path.append('./')
from redditrepostsleuth.core.config import Config
from redditrepostsleuth.core.model.events.celerytask import CeleryQueueSize
from redditrepostsleuth.core.logging import log
from redditrepostsleuth.core.services.eventlogging import EventLogging

config = Config()

def log_queue_size(event_logger):
    skip_keys = ['unacked_index', 'unacked_mutex', 'unacked']
    while True:
        try:
            client = redis.Redis(host=config.redis_host, port=config.redis_port, db=0, password=config.redis_password)

            for queue in client.scan_iter():
                queue_name = queue.decode('utf-8')
                if queue_name[0:1] == '_' or len(queue_name) > 20 or queue_name in skip_keys:
                    continue
                event_logger.save_event(
                    CeleryQueueSize(queue_name, client.llen(queue_name), event_type='queue_update'))
            time.sleep(2)
        except Exception as e:
            pass
            # log.error('Queue update task failed. Key %s', queue_name)

if __name__ == '__main__':
    log.info('Starting Monitor Service')
Example #2
0
        except Exception as e:
            log.error('Error getting comment from util api', exc_info=True)
            return

        if r.status_code != 200:
            log.error('Bad status code from Util API %s for %s', r.status_code,
                      permalink)
            return

        raw_data = json.loads(r.text)

        try:
            return raw_data[1]['data']['children'][0]['data']
        except Exception as e:
            return

    def _get_score(self, comment: Comment):
        try:
            return comment.score
        except Exception as e:
            log.error('Failed to get score for comment %s', comment.id)


if __name__ == '__main__':
    config = Config(
        '/home/barry/PycharmProjects/RedditRepostSleuth/sleuth_config.json')
    uowm = SqlAlchemyUnitOfWorkManager(get_db_engine(config))
    reddit = get_reddit_instance(config)
    reddit_manager = RedditManager(reddit)
    comment_monitor = BotCommentMonitor(reddit_manager, uowm, config)
    comment_monitor.check_comments()
        return message

    def build_report_msg(self, subreddit: Text, values: Dict) -> Text:
        with self.uowm.start() as uow:
            monitored_sub = uow.monitored_sub.get_by_sub(subreddit)
            if not monitored_sub:
                log.error('Failed to find sub %s when building report message',
                          subreddit)
                return DEFAULT_REPORT_MSG
            if not monitored_sub.report_msg:
                log.debug(
                    'Sub %s doesn\'t have a custom report message, returning default',
                    subreddit)
                return DEFAULT_REPORT_MSG
            try:
                msg = monitored_sub.report_msg.format(**values)
                log.debug('Build custom report message for sub %s: %s', msg,
                          subreddit)
                return msg
            except Exception as e:
                log.exception('Failed to build report msg', exc_info=True)
                return DEFAULT_REPORT_MSG


if __name__ == '__main__':
    config = Config(
        r'C:\Users\mcare\PycharmProjects\RedditRepostSleuth\sleuth_config.json'
    )
    uowm = SqlAlchemyUnitOfWorkManager(get_db_engine(config))
    resp = ResponseBuilder(uowm)