Ejemplo n.º 1
0
def create_app(name: str,
               psql_uri: str = None,
               mongo_uri: str = None,
               psql_pool_args: dict = None) -> Pint:
    """
    Create the core API app. Supply URIs as necessary
    """
    app = Pint(name)

    @app.before_serving
    async def _startup():
        if psql_uri:
            import asyncpg

            kwargs = {"min_size": 3, "max_size": 8, "command_timeout": 5}
            if "localhost" not in psql_uri:
                kwargs["ssl"] = SSLContext()
            if psql_pool_args:
                kwargs.update(psql_pool_args)
            app.db = await asyncpg.create_pool(psql_uri, **kwargs)
        else:
            app.db = None

        if mongo_uri:
            from motor.motor_asyncio import AsyncIOMotorClient

            app.mdb = AsyncIOMotorClient(mongo_uri)
        else:
            app.mdb = None

    app.json_encoder = CustomJSONEncoder
    app.after_request(add_cors)
    return app
Ejemplo n.º 2
0
def create_app(name: str, mongo_uri: str = None) -> Pint:
    """Create the core API app. Supply URIs as necessary"""
    app = Pint(name)

    @app.before_serving
    async def _startup():
        app.mdb = AsyncIOMotorClient(mongo_uri) if mongo_uri else None

    app.json_encoder = CustomJSONEncoder
    app.after_request(add_cors)
    return app
Ejemplo n.º 3
0
from quart import got_request_exception
from quart_openapi import Pint
from rollbar.contrib.quart import report_exception

# module
from avwx_api_core.app import add_cors, CustomJSONEncoder
from avwx_api_core.cache import CacheManager
from avwx_api_core.token import TokenManager
from avwx_api.station_counter import StationCounter

CACHE_EXPIRES = {"metar": 1, "taf": 1}
MONGO_URI = environ.get("MONGO_URI")

app = Pint(__name__)
app.json_encoder = CustomJSONEncoder
app.after_request(add_cors)


@app.before_serving
async def init_helpers():
    """Init API helpers

    Need async to connect helpers to event loop
    """
    app.mdb = AsyncIOMotorClient(MONGO_URI) if MONGO_URI else None
    app.cache = CacheManager(app, expires=CACHE_EXPIRES)
    app.token = TokenManager(app)
    app.station = StationCounter(app)


@app.before_first_request