예제 #1
0
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
예제 #2
0
파일: cli.py 프로젝트: dwmclary/simmetrica
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
예제 #3
0
 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)
예제 #4
0
 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)
예제 #5
0
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