Exemplo n.º 1
0
def make_app(global_settings: dict, **settings: dict) -> Router:

    session_factory = SignedCookieSessionFactory(settings["zam.secret"])

    with Configurator(settings=settings,
                      root_factory=Root,
                      session_factory=session_factory) as config:

        config.include("pyramid_tm")

        engine = engine_from_config(settings, "sqlalchemy.")
        DBSession.configure(bind=engine)
        Base.metadata.bind = engine
        config.include("pyramid_default_cors")

        config.include("pyramid_jinja2")
        config.add_jinja2_renderer(".html")
        config.add_jinja2_search_path("zam_repondeur:templates", name=".html")

        config.add_route("choices_lectures", "/choices/dossiers/{uid}/")

        config.add_static_view("static", "static", cache_max_age=3600)

        config.scan()

        load_data(config)
        load_version(config)

        app = config.make_wsgi_app()

    return app
Exemplo n.º 2
0
def main(argv: List[str] = sys.argv) -> None:
    if len(argv) != 2:
        usage(argv)
    config_uri = argv[1]
    setup_logging(config_uri)
    settings = get_appsettings(config_uri)
    engine = engine_from_config(settings, "sqlalchemy.")
    DBSession.configure(bind=engine)
    Base.metadata.create_all(engine)
Exemplo n.º 3
0
def setup_database(config: Configurator, settings: dict) -> None:

    config.include("pyramid_tm")

    engine = engine_from_config(
        settings,
        "sqlalchemy.",
        connect_args={"application_name": "zam_webapp"})
    DBSession.configure(bind=engine)
    Base.metadata.bind = engine

    if asbool(settings.get("zam.log_sql_queries_with_origin")):
        event.listen(engine, "before_cursor_execute", log_query_with_origin)
Exemplo n.º 4
0
def setup_database(config: Configurator, settings: dict) -> None:

    # Make sure the SQLAlchemy connection pool is large enough for worker threads
    pool_size = max(5, settings["huey.workers"])

    config.include("pyramid_tm")

    engine = engine_from_config(settings, "sqlalchemy.", pool_size=pool_size)
    DBSession.configure(bind=engine)
    Base.metadata.bind = engine

    if asbool(settings.get("zam.log_sql_queries_with_origin")):
        event.listen(engine, "before_cursor_execute", log_query_with_origin)
Exemplo n.º 5
0
def main(argv: List[str] = sys.argv) -> None:
    if len(argv) != 2:
        usage(argv)
    config_uri = argv[1]

    setup_logging(config_uri)

    settings = get_appsettings(config_uri)
    settings = {**BASE_SETTINGS, **settings}

    rollbar_settings = extract_settings(settings, prefix="rollbar.")
    if "access_token" in rollbar_settings and "environment" in rollbar_settings:
        setup_rollbar_log_handler(rollbar_settings)

    engine = engine_from_config(
        settings,
        "sqlalchemy.",
        connect_args={"application_name": "zam_worker"})

    DBSession.configure(bind=engine)

    init_repository(settings)
    repository.load_data()

    huey = init_huey(settings)

    from zam_repondeur.tasks.fetch import fetch_articles, fetch_amendements  # noqa
    from zam_repondeur.tasks.periodic import update_data, fetch_all_amendements  # noqa

    try:
        flush_stale_locks(huey)
    except ConnectionError:
        logger.exception("Failed to connect to Redis")
        sys.exit(1)

    consumer = huey.create_consumer(
        worker_type="thread",
        workers=int(settings["huey.workers"]),
        max_delay=5.0,
        flush_locks=True,
    )
    consumer.run()