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)
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)
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
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
def test_set_timeline(self): req = TestRequest() timeline = Timeline() set_request_timeline(req, timeline) self.assertEqual(timeline, get_request_timeline(req))