async def init_app(argv=None): app = web.Application(router=UrlDispatcherEx()) app['config'] = get_config(argv) setup_aiohttp_apispec(app=app, error_callback=my_error_handler) app.middlewares.append(validation_middleware) app.on_startup.append(init_pg) app.on_cleanup.append(close_pg) setup_routes(app) return app
def db(): test_config = get_config(['-c', TEST_CONFIG_PATH.as_posix()]) setup_db(test_config['postgres']) yield teardown_db(test_config['postgres'])
import os from flask_script import Manager, Server from api.settings import get_config from api.app import create_app def find_assets(): """Yield paths for all static files and templates.""" for name in ['static', 'templates']: directory = os.path.join(app.config['PATH'], name) for entry in os.scandir(directory): if entry.is_file(): yield entry.path config = get_config(os.getenv('FLASK_ENV')) app = create_app(config) server = Server(host='0.0.0.0', extra_files=find_assets()) manager = Manager(app) manager.add_command('run', server) if __name__ == '__main__': manager.run()
import os from flask_script import Command, Manager, Server from api.settings import get_config from api.app import create_app config = get_config(os.getenv('FLASK_CONFIG', 'dev')) app = create_app(config) manager = Manager(app) manager.add_command('run', Server(host='0.0.0.0')) if __name__ == '__main__': manager.run()
def app(): return create_app(get_config('test'))
def it_returns_a_config(): config = get_config("prod") expect(config.ENV) == "prod"
def it_handles_unknown_names(): with expect.raises(AssertionError): get_config("not_a_valid_config")
def it_handles_empty_names(): with expect.raises(AssertionError): get_config("")
"""Приложения для запуска при деплое, использует внутренний веб сервер и создает unix или tcp сокеты""" import argparse from aiohttp import web from aiohttp_apispec import validation_middleware, setup_aiohttp_apispec from aiohttp_route_middleware import UrlDispatcherEx from api.models import init_pg, close_pg from api.routes import setup_routes from api.schemas import my_error_handler from api.settings import get_config parser = argparse.ArgumentParser(description="aiohttp server example") parser.add_argument('--path') parser.add_argument('--port') if __name__ == '__main__': # ВАЖНО!! ТОЛЬКО ДЛЯ ДЕПЛОЯ НА БОЕВОЙ СЕРВЕР app = web.Application(router=UrlDispatcherEx()) app['config'] = get_config() setup_aiohttp_apispec(app=app, error_callback=my_error_handler) app.middlewares.append(validation_middleware) app.on_startup.append(init_pg) app.on_cleanup.append(close_pg) setup_routes(app) args = parser.parse_args() web.run_app(app, path=args.path, port=args.port)