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')
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)