aiohttp и gunicorn: регистратор не работает - PullRequest
0 голосов
/ 12 ноября 2018

Я пытаюсь отладить настройки соединения aiopg в производственной среде с помощью aiohttp logger и gunicorn.

Я пытаюсь зарегистрировать учетные данные своей базы данных:

models.py:

async def init_pg(app):
    logger = logging.getLogger('aiohttp.access')
    logger.error("POSTGRES_USER = %s" % app['settings'].POSTGRES_USER)
    logger.error("POSTGRES_DATABASE = %s" % app['settings'].POSTGRES_DATABASE)
    logger.error("POSTGRES_HOST = %s" % app['settings'].POSTGRES_HOST)
    logger.error("POSTGRES_PASSWORD = %s" % app['settings'].POSTGRES_PASSWORD)

    app['engine'] = await create_engine(
        user=app['settings'].POSTGRES_USER,
        database=app['settings'].POSTGRES_DATABASE,
        host=app['settings'].POSTGRES_HOST,
        password=app['settings'].POSTGRES_PASSWORD
    )

Это не добавляет никакого вывода к /var/log/gunicorn/error_log, хотя ожидается.

Вот как я начинаю огнестрельное оружие:

/usr/local/bin/gunicorn producer.main:app --daemon --bind 0.0.0.0:8002 --worker-class aiohttp.worker.GunicornWebWorker --access-logfile /var/log/gunicorn/access_log --error-logfile /var/log/gunicorn/error_log --env ENVIRONMENT=PRODUCTION --timeout 120

Вот как я могу создать приложение aiohttp:

main.py

import logging

import aiohttp_jinja2
import jinja2
from aiojobs.aiohttp import setup as setup_aiojobs
from aiohttp_swagger import setup_swagger
from aiohttp import web, web_middlewares

from . import settings
from .models import init_pg
from .urls import setup_routes

"""
Run either of the following commands from the parent of current directory:

adev runserver producer --livereload

python3 -m producer.main
"""


def create_app():
    logging.basicConfig(level=logging.DEBUG)

    app = web.Application(middlewares=[
        web_middlewares.normalize_path_middleware(append_slash=True),
    ], client_max_size=2048**2)

    app.update(name='producer', settings=settings)

    # setup Jinja2 template renderer
    aiohttp_jinja2.setup(app, loader=jinja2.PackageLoader('producer', 'templates'))

    # create db connection on startup, shutdown on exit
    app.on_startup.append(init_pg)
    # app.on_cleanup.append(close_pg)

    # setup views and routes
    setup_routes(app)

    # setup middlewares
    # setup_middlewares(app)

    # setup aiojobs scheduler
    setup_aiojobs(app)

    # setup swagger documentation
    setup_swagger(app, swagger_url="api/doc")

    return app


if __name__ == '__main__':
    app = create_app()
    web.run_app(app, host=app['settings'].HOST, port=app['settings'].PORT)
...