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
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
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