예제 #1
0
def setup(threads):
    pool = ThreadedConnectionPool(
        minconn=int(threads / 4),
        maxconn=int(threads / 4),
        database="hello_world",
        user="******",
        password="******",
        host="tfb-database",
        port=5432,
    )
    template = load_fortunes_template()
    read_row_sql = (
        'SELECT world."randomnumber", world."id" FROM "world" WHERE id = %(id)s'
    )
    prepared_read_row_sql = (
        'SELECT world."randomnumber", world."id" FROM "world" WHERE id = $1')
    write_row_sql = 'UPDATE "world" SET "randomnumber"=$1 WHERE id=$2'
    additional_row = (0, "Additional fortune added at request time.")
    db = pool.getconn()
    cursor = db.cursor()
    cursor.execute("PREPARE read_stmt (int) AS " + prepared_read_row_sql)
    cursor.execute("PREPARE write_stmt (int, int) AS " + write_row_sql)
    cursor.execute('PREPARE fortune AS SELECT * FROM "Fortune"')
    del cursor
    pool.putconn(db)
    del db
    return (
        pool,
        template,
        read_row_sql,
        prepared_read_row_sql,
        write_row_sql,
        additional_row,
    )
예제 #2
0
    def setUpClass(cls):
        c = cls.base_concurrency * 4
        pool = cls.pool = ThreadedConnectionPool(
            c, c, "dbname=%s user=%s port=%s host=%s password=%s" % (
                os.environ.get('PQ_TEST_DB', 'pq_test'),
                os.environ.get('PQ_TEST_USER', 'postgres'),
                os.environ.get('PQ_TEST_DB_PORT', '5432'),
                os.environ.get('PQ_TEST_DB_HOST', 'localhost'),
                os.environ.get('PQ_TEST_DB_PASS', '')),
            cursor_factory=cls.CURSOR_FACTORY
        )
        cls.pq = PQ(
            pool=pool, table="queue", queue_class=cls.queue_class,
        )

        def setup_filter(record):
            return False

        logger.addFilter(setup_filter)
        try:
            cls.pq.create()
        except ProgrammingError as exc:
            if exc.pgcode != '42P07':
                raise
        finally:
            logger.removeFilter(setup_filter)
예제 #3
0
파일: service.py 프로젝트: skripkar/noc
class SAEService(Service):
    name = "sae"
    api = [SAEAPI]
    # Some activator pools may be unavailable
    # while SAE remains healthy
    require_dcs_health = False

    def __init__(self):
        super(SAEService, self).__init__()
        self.pool_cache = {}
        self.activators = {}
        self.pg_pool = None
        self.pg_pool_ready = threading.Event()

    def load_pools(self):
        self.logger.info("Loading pools")
        for p in Pool.objects.all():
            self.pool_cache[str(p.id)] = p.name

    def on_activate(self):
        self.load_pools()
        self.pg_pool = ThreadedConnectionPool(1, config.sae.db_threads,
                                              **config.pg_connection_args)
        self.pg_pool_ready.set()

    def get_pool_name(self, pool_id):
        """
        Returns pool name by id
        """
        return self.pool_cache.get(str(pool_id))

    @contextlib.contextmanager
    def get_pg_connect(self):
        self.pg_pool_ready.wait()
        connect = self.pg_pool.getconn()
        if not connect.autocommit:
            connect.autocommit = True
        try:
            yield connect
        finally:
            self.pg_pool.putconn(connect)
예제 #4
0
파일: tests.py 프로젝트: welkinhealth/pq
    def setUpClass(cls):
        c = cls.base_concurrency * 4
        pool = cls.pool = ThreadedConnectionPool(
            c, c, "dbname=pq_test user=postgres",
        )
        cls.pq = PQ(
            pool=pool, table="queue", queue_class=cls.queue_class,
        )

        try:
            cls.pq.create()
        except ProgrammingError as exc:
            # We ignore a duplicate table error.
            if exc.pgcode != '42P07':
                raise
예제 #5
0
    def setUpClass(cls):
        c = cls.base_concurrency * 4
        pool = cls.pool = ThreadedConnectionPool(
            c,
            c,
            "dbname=%s user=%s" % (os.environ.get('PQ_TEST_DB', 'pq_test'),
                                   os.environ.get('PQ_TEST_USER', 'postgres')),
            cursor_factory=cls.CURSOR_FACTORY)
        cls.pq = PQ(
            pool=pool,
            table="queue",
            queue_class=cls.queue_class,
        )

        try:
            cls.pq.create()
        except ProgrammingError as exc:
            # We ignore a duplicate table error.
            if exc.pgcode != '42P07':
                raise
예제 #6
0
파일: service.py 프로젝트: skripkar/noc
 def on_activate(self):
     self.load_pools()
     self.pg_pool = ThreadedConnectionPool(1, config.sae.db_threads,
                                           **config.pg_connection_args)
     self.pg_pool_ready.set()