Example #1
0
def set_request_started(
    starttime=None, request_statements=None, txn=None, enable_timeout=True):
    """Set the start time for the request being served by the current
    thread.

    :param start_time: The start time of the request. If given, it is used as
        the start time for the request, as returned by time().  If it is not
        given, the current time is used.
    :param request_statements; The sequence used to store the logged SQL
        statements.
    :type request_statements: mutable sequence.
    :param txn: The current transaction manager. If given, txn.commit() and
        txn.abort() calls are logged too.
    :param enable_timeout: If True, a timeout error is raised if the request
        runs for a longer time than the configured timeout.
    """
    if getattr(_local, 'request_start_time', None) is not None:
        warnings.warn('set_request_started() called before previous request '
                      'finished', stacklevel=1)

    if starttime is None:
        starttime = time()
    _local.request_start_time = starttime
    request = get_current_browser_request()
    if request_statements is not None:
        # Specify a specific sequence object for the timeline.
        set_request_timeline(request, Timeline(request_statements))
    else:
        # Ensure a timeline is created, so that time offset for actions is
        # reasonable.
        set_request_timeline(request, Timeline())
    _local.current_statement_timeout = None
    _local.enable_timeout = enable_timeout
    _local.commit_logger = CommitLogger(transaction)
    transaction.manager.registerSynch(_local.commit_logger)
Example #2
0
def set_request_started(starttime=None,
                        request_statements=None,
                        txn=None,
                        enable_timeout=True,
                        detail_filter=None):
    """Set the start time for the request being served by the current
    thread.

    :param start_time: The start time of the request. If given, it is used as
        the start time for the request, as returned by time().  If it is not
        given, the current time is used.
    :param request_statements; The sequence used to store the logged SQL
        statements.
    :type request_statements: mutable sequence.
    :param txn: The current transaction manager. If given, txn.commit() and
        txn.abort() calls are logged too.
    :param enable_timeout: If True, a timeout error is raised if the request
        runs for a longer time than the configured timeout.
    :param detail_filter: An optional (category, detail) -> detail callable
        that filters action details.  This may be used when some details are
        expected to be very large.
    """
    if getattr(_local, 'request_start_time', None) is not None:
        warnings.warn(
            'set_request_started() called before previous request '
            'finished',
            stacklevel=1)

    if starttime is None:
        starttime = time()
    _local.request_start_time = starttime
    request = get_current_browser_request()
    if detail_filter is not None:
        timeline_factory = partial(FilteredTimeline,
                                   detail_filter=detail_filter)
    else:
        timeline_factory = Timeline
    if request_statements is not None:
        # Specify a specific sequence object for the timeline.
        set_request_timeline(request, timeline_factory(request_statements))
    else:
        # Ensure a timeline is created, so that time offset for actions is
        # reasonable.
        set_request_timeline(request, timeline_factory())
    _local.current_statement_timeout = None
    _local.enable_timeout = enable_timeout
    _local.commit_logger = CommitLogger(transaction)
    transaction.manager.registerSynch(_local.commit_logger)
Example #3
0
def clear_request_started():
    """Clear the request timer.  This function should be called when
    the request completes.
    """
    if getattr(_local, 'request_start_time', None) is None:
        warnings.warn('clear_request_started() called outside of a request',
                      stacklevel=2)
    _local.request_start_time = None
    _local.sql_logging = None
    _local.sql_logging_start = None
    _local.sql_logging_tracebacks_if = None
    request = get_current_browser_request()
    set_request_timeline(request, Timeline())
    if getattr(_local, 'commit_logger', None) is not None:
        transaction.manager.unregisterSynch(_local.commit_logger)
        del _local.commit_logger
Example #4
0
def clear_request_started():
    """Clear the request timer.  This function should be called when
    the request completes.
    """
    if getattr(_local, 'request_start_time', None) is None:
        warnings.warn('clear_request_started() called outside of a request',
            stacklevel=2)
    _local.request_start_time = None
    _local.sql_logging = None
    _local.sql_logging_start = None
    _local.sql_logging_tracebacks_if = None
    request = get_current_browser_request()
    set_request_timeline(request, Timeline())
    if getattr(_local, 'commit_logger', None) is not None:
        transaction.manager.unregisterSynch(_local.commit_logger)
        del _local.commit_logger
Example #5
0
 def test_set_timeline(self):
     req = TestRequest()
     timeline = Timeline()
     set_request_timeline(req, timeline)
     self.assertEqual(timeline, get_request_timeline(req))