23 lines
514 B
Python
23 lines
514 B
Python
"""Async executor versions of file functions from the os module."""
|
|
import asyncio
|
|
from functools import partial, wraps
|
|
import os
|
|
|
|
|
|
def wrap(func):
|
|
@asyncio.coroutine
|
|
@wraps(func)
|
|
def run(*args, loop=None, executor=None, **kwargs):
|
|
if loop is None:
|
|
loop = asyncio.get_event_loop()
|
|
pfunc = partial(func, *args, **kwargs)
|
|
return loop.run_in_executor(executor, pfunc)
|
|
|
|
return run
|
|
|
|
|
|
stat = wrap(os.stat)
|
|
|
|
if hasattr(os, "sendfile"):
|
|
sendfile = wrap(os.sendfile)
|