示例#1
0
def test_register_lua_script():
    eng = Engine(db=0)

    eng.lua.register('my_script', 'return ARGV[1]')

    assert eng.lua.my_script is not None
    assert eng.lua.my_script(args=[4]) == b'4'
示例#2
0
def main():
    # Load the config
    config = Config(os.path.dirname(os.path.realpath(__file__)))
    config.from_object('cacahuate.settings')
    config.from_envvar('CACAHUATE_SETTINGS', silent=True)

    # Set the timezone
    os.environ['TZ'] = config['TIMEZONE']
    time.tzset()

    # Setup logging
    logging.config.dictConfig(config['LOGGING'])

    # Load the models
    eng = Engine(
        host=config['REDIS_HOST'],
        port=config['REDIS_PORT'],
        db=config['REDIS_DB'],
        id_function=yuid,
    )
    bind_models(eng)

    # Create mongo indexes
    create_indexes(config)

    # start the loop
    loop = Loop(config)
    loop.start()
示例#3
0
def nrm():
    nrm = Engine()

    nrm.lua.drop(args=['*'])

    bound_models(nrm)

    return nrm
示例#4
0
def bind_models(config):
    ''' Binds the models to a coralillo engine, returns nothing '''
    engine = Engine(
        host=config['REDIS_HOST'],
        port=config['REDIS_PORT'],
        db=config['REDIS_DB'],
    )
    engine.lua.drop(args=['*'])

    bimo(engine)
示例#5
0
def test_set_engine_delayed():
    class Foo(Model):
        name = fields.Text()

    with pytest.raises(UnboundModelError):
        Foo.get_engine()

    eng = Engine()

    Foo.set_engine(eng)

    assert Foo.get('de') is None
示例#6
0
def test_can_replace_id_function():
    def simple_ids():
        return ''.join(choice('123456789abcdef') for c in range(11))

    simple_eng = Engine(id_function=simple_ids)
    uuid_eng = Engine()

    class SimpleDog(Model):
        name = fields.Text()

        class Meta:
            engine = simple_eng

    class UuidDog(Model):
        name = fields.Text()

        class Meta:
            engine = uuid_eng

    simple_doggo = SimpleDog(name='doggo').save()
    assert len(simple_doggo.id) == 11

    uuid_doggo = UuidDog(name='doggo').save()
    assert len(uuid_doggo.id) == 32
示例#7
0
def test_create_engine():
    eng1 = Engine(db=11)
    eng2 = Engine(db=12)

    class Dog(Model):
        name = fields.Text()

        class Meta:
            engine = eng1

    class Cat(Model):
        name = fields.Text()

        class Meta:
            engine = eng2

    doggo = Dog(name='doggo').save()
    catto = Cat(name='catto').save()

    assert eng1.redis.exists('dog:{}:obj'.format(doggo.id))
    assert not eng1.redis.exists('cat:{}:obj'.format(catto.id))

    assert eng2.redis.exists('cat:{}:obj'.format(catto.id))
    assert not eng2.redis.exists('dog:{}:obj'.format(doggo.id))
示例#8
0
文件: main.py 项目: tracsa/cacahuate
def main():
    # Load the config
    config = Config(os.path.dirname(os.path.realpath(__file__)))
    config.from_object('cacahuate.settings')

    if os.getenv('CACAHUATE_SETTINGS'):
        config.from_envvar('CACAHUATE_SETTINGS', silent=False)

    # Set the timezone
    os.environ['TZ'] = config['TIMEZONE']
    time.tzset()

    # Setup logging
    logging.config.dictConfig(config['LOGGING'])

    # Load the models
    eng = Engine(
        host=config['REDIS_HOST'],
        port=config['REDIS_PORT'],
        db=config['REDIS_DB'],
        id_function=getattr(
            import_module(config['DB_ID_FUNCTION'].rsplit('.', 1)[0]),
            config['DB_ID_FUNCTION'].rsplit('.', 1)[1],
        ),
    )
    bind_models(eng)

    # Create mongo indexes
    create_indexes(config)

    # Update celery config
    celery.conf.update(
        broker='amqp://{user}@{host}//'.format(
            user=config['RABBIT_USER'],
            host=config['RABBIT_HOST'],
        ),
        worker_concurrency=1,
        worker_hijack_root_logger=False,
        task_default_queue=config['RABBIT_QUEUE'],
    )
    worker = celery.Worker()
    worker.start()