def push_simmetrica_event(event_name, increment_by=1, host=MONITORING_HOST, port=6379, db=0, password=None): """ :param event_name: str, event, like "spider_opened" :param increment_by: int, increments event counter by this value :param host: Redis server host, default is MONITORING_HOST :param port: Redis server port, default is 6379 :param db: Redis database, default is 0 :param password: Redis password, default is None :return: True if the event has been pushed, None otherwise """ global USING_SIMMETRICA if not USING_SIMMETRICA: return try: simm = Simmetrica(host=host, port=port, db=db, password=password) simm.push(event_name, increment=increment_by) except Exception, e: # in very rare cases, pushing fails (if using SocksiPy for ex). # TODO: implement command-line event addition return
subparsers = parser.add_subparsers(dest='subparser_name') push_parser = subparsers.add_parser('push') push_parser.add_argument('event') push_parser.add_argument('--increment', default=Simmetrica.DEFAULT_INCREMENT, type=int) push_parser.add_argument('--now', type=int) query_parser = subparsers.add_parser('query') query_parser.add_argument('event') query_parser.add_argument('start', type=int) query_parser.add_argument('end', type=int) query_parser.add_argument('--resolution', default='5min', choices=Simmetrica.resolutions) args = parser.parse_args() simmetrica = Simmetrica( os.getenv('REDIS_HOST'), os.getenv('REDIS_PORT'), os.getenv('REDIS_DB') ) if args.subparser_name == 'push': simmetrica.push(args.event, args.increment, args.now) print 'ok' if args.subparser_name == 'query': results = simmetrica.query(args.event, args.start, args.end, args.resolution) for timestamp, value in results: print timestamp, value
def test_push(self): with mock.patch('simmetrica.StrictRedis') as StrictRedis: simmetrica = Simmetrica() hincrby = StrictRedis.return_value.pipeline.return_value.hincrby simmetrica.push('foo') self.assertTrue(hincrby.called)
def test_push(self): with mock.patch('simmetrica.StrictRedis') as StrictRedis: simmetrica = Simmetrica() hincrby = StrictRedis.return_value.pipeline.return_value.hincrby simmetrica.push('foo') self.assertTrue(hincrby.called)
query_parser = subparsers.add_parser('query', parents=[redis_arg_parser]) query_parser.add_argument('event') query_parser.add_argument('start', type=int) query_parser.add_argument('end', type=int) query_parser.add_argument('--resolution', default='5min', choices=Simmetrica.resolutions) args = parser.parse_args() simmetrica = Simmetrica(args.redis_host, args.redis_port, args.redis_db, args.redis_password) if args.subparser_name == 'push': simmetrica.push(args.event, args.increment, args.now) print 'ok' if args.subparser_name == 'query': results = simmetrica.query(args.event, args.start, args.end, args.resolution) for timestamp, value in results: print timestamp, value ########NEW FILE######## __FILENAME__ = simmetrica #!/usr/bin/env python # -*- coding: utf-8 -*- import time