Пример #1
0
def build_engine(url,
                 engine_options,
                 database_query_profiling_proxy=False,
                 trace_logger=None,
                 slow_query_log_threshold=0):
    # Should we use the logging proxy?
    if database_query_profiling_proxy:
        import galaxy.model.orm.logging_connection_proxy as logging_connection_proxy
        proxy = logging_connection_proxy.LoggingProxy()
    # If metlog is enabled, do micrologging
    elif trace_logger:
        import galaxy.model.orm.logging_connection_proxy as logging_connection_proxy
        proxy = logging_connection_proxy.TraceLoggerProxy(trace_logger)
    else:
        proxy = None
    if slow_query_log_threshold:

        @event.listens_for(Engine, "before_cursor_execute")
        def before_cursor_execute(conn, cursor, statement, parameters, context,
                                  executemany):
            conn.info.setdefault('query_start_time', []).append(time.time())

        @event.listens_for(Engine, "after_cursor_execute")
        def after_cursor_execute(conn, cursor, statement, parameters, context,
                                 executemany):
            total = time.time() - conn.info['query_start_time'].pop(-1)
            if total > slow_query_log_threshold:
                log.debug("Slow query: %f(s)\n%s\nParameters: %s" %
                          (total, statement, parameters))

    # Create the database engine
    engine = create_engine(url, proxy=proxy, **engine_options)
    return engine
Пример #2
0
def build_engine(url,
                 engine_options,
                 database_query_profiling_proxy=False,
                 trace_logger=None,
                 slow_query_log_threshold=0,
                 thread_local_log=None,
                 log_query_counts=False):
    # Should we use the logging proxy?
    if database_query_profiling_proxy:
        import galaxy.model.orm.logging_connection_proxy as logging_connection_proxy
        proxy = logging_connection_proxy.LoggingProxy()
    # If metlog is enabled, do micrologging
    elif trace_logger:
        import galaxy.model.orm.logging_connection_proxy as logging_connection_proxy
        proxy = logging_connection_proxy.TraceLoggerProxy(trace_logger)
    else:
        proxy = None
    if slow_query_log_threshold or thread_local_log or log_query_counts:

        @event.listens_for(Engine, "before_execute")
        def before_execute(conn, clauseelement, multiparams, params):
            conn.info.setdefault('query_start_time', []).append(time.time())

        @event.listens_for(Engine, "after_cursor_execute")
        def after_cursor_execute(conn, cursor, statement, parameters, context,
                                 executemany):
            total = time.time() - conn.info['query_start_time'].pop(-1)
            if total > slow_query_log_threshold:
                log.debug("Slow query: %f(s)\n%s\nParameters: %s" %
                          (total, statement, parameters))
            if log_query_counts:
                try:
                    QUERY_COUNT_LOCAL.times.append(total)
                except AttributeError:
                    # Not a web thread.
                    pass
            if thread_local_log is not None:
                try:
                    if thread_local_log.log:
                        log.debug("Request query: %f(s)\n%s\nParameters: %s" %
                                  (total, statement, parameters))
                except AttributeError:
                    pass

    # Create the database engine
    engine = create_engine(url, proxy=proxy, **engine_options)
    return engine
Пример #3
0
def build_engine(url, engine_options, database_query_profiling_proxy=False, trace_logger=None):
    load_egg_for_url( url )

    # Should we use the logging proxy?
    if database_query_profiling_proxy:
        import galaxy.model.orm.logging_connection_proxy as logging_connection_proxy
        proxy = logging_connection_proxy.LoggingProxy()
    # If metlog is enabled, do micrologging
    elif trace_logger:
        import galaxy.model.orm.logging_connection_proxy as logging_connection_proxy
        proxy = logging_connection_proxy.TraceLoggerProxy( trace_logger )
    else:
        proxy = None

    # Create the database engine
    engine = create_engine( url, proxy=proxy, **engine_options )
    return engine