예제 #1
0
파일: ioloop.py 프로젝트: xuning992/tfty
def trace_run_callback(wrapped, instance, args, kwargs):
    """
    """
    def _get_actually_callback(callback, *args, **kwargs):
        try:
            return callback.func
        except AttributeError:
            return None

    callback = _get_actually_callback(*args, **kwargs)
    tracker = getattr(callback, '_self_tracker', None)
    ret = wrapped(*args, **kwargs)

    if tracker:
        tracker._ref_count -= 1
        finish_tracker(tracker)

    return ret
예제 #2
0
def trace_tracker_export(wrapped, instance, args, kwargs):
    """
    """
    # the request maybe exist two situations in httpserver delegate
    request = instance.delegate.request if instance.delegate else instance.request

    if not request:
        console.warning(
            "No request got in _ServerRequestAdapter object. this should not be happen. if this continue."
            " please report us.")
        return wrapped(*args, **kwargs)

    tracker = getattr(request, "_self_tracker", None)
    if not tracker:
        return wrapped(*args, **kwargs)

    try:
        wrapped(*args, **kwargs)
    finally:
        setattr(tracker, "_can_finalize", True)
        finish_tracker(tracker)