import linecache import traceback from . import base_futures from . import coroutines def _task_repr_info(task): info = base_futures._future_repr_info(task) if task._must_cancel: # replace status info[0] = 'cancelling' coro = coroutines._format_coroutine(task._coro) info.insert(1, 'coro=<%s>' % coro) if task._fut_waiter is not None: info.insert(2, 'wait_for=%r' % task._fut_waiter) return info def _task_get_stack(task, limit): frames = [] try: # 'async def' coroutines f = task._coro.cr_frame except AttributeError: f = task._coro.gi_frame if f is not None: while f is not None: if limit is not None: if limit <= 0: break limit -= 1 frames.append(f) f = f.f_back frames.reverse() elif task._exception is not None: tb = task._exception.__traceback__ while tb is not None: if limit is not None: if limit <= 0: break limit -= 1 frames.append(tb.tb_frame) tb = tb.tb_next return frames def _task_print_stack(task, limit, file): extracted_list = [] checked = set() for f in task.get_stack(limit=limit): lineno = f.f_lineno co = f.f_code filename = co.co_filename name = co.co_name if filename not in checked: checked.add(filename) linecache.checkcache(filename) line = linecache.getline(filename, lineno, f.f_globals) extracted_list.append((filename, lineno, name, line)) exc = task._exception if not extracted_list: print('No stack for %r' % task, file=file) elif exc is not None: print('Traceback for %r (most recent call last):' % task, file=file) else: print('Stack for %r (most recent call last):' % task, file=file) traceback.print_list(extracted_list, file=file) if exc is not None: for line in traceback.format_exception_only(exc.__class__, exc): print(line, file=file, end='')
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
__pycache__ | Folder | 0755 |
|
|
__init__.py | File | 1.4 KB | 0644 |
|
base_events.py | File | 56 KB | 0644 |
|
base_futures.py | File | 2.03 KB | 0644 |
|
base_subprocess.py | File | 8.88 KB | 0644 |
|
base_tasks.py | File | 2.13 KB | 0644 |
|
compat.py | File | 543 B | 0644 |
|
constants.py | File | 371 B | 0644 |
|
coroutines.py | File | 10.87 KB | 0644 |
|
events.py | File | 22.96 KB | 0644 |
|
futures.py | File | 15.53 KB | 0644 |
|
locks.py | File | 15.22 KB | 0644 |
|
log.py | File | 124 B | 0644 |
|
proactor_events.py | File | 19.92 KB | 0644 |
|
protocols.py | File | 4.41 KB | 0644 |
|
queues.py | File | 7.77 KB | 0644 |
|
selector_events.py | File | 40.66 KB | 0644 |
|
sslproto.py | File | 25.4 KB | 0644 |
|
streams.py | File | 23.9 KB | 0644 |
|
subprocess.py | File | 7.45 KB | 0644 |
|
tasks.py | File | 24.47 KB | 0644 |
|
test_utils.py | File | 14.74 KB | 0644 |
|
transports.py | File | 9.83 KB | 0644 |
|
unix_events.py | File | 36.39 KB | 0644 |
|
windows_events.py | File | 27.18 KB | 0644 |
|
windows_utils.py | File | 6.72 KB | 0644 |
|