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