Create noblock.py

This commit is contained in:
Mr-Blob 2018-06-19 10:02:21 +00:00 committed by GitHub
parent 844d3a4869
commit ccd6f14efc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

13
src/cogs/utils/noblock.py Normal file
View File

@ -0,0 +1,13 @@
#!/usr/bin/env python3.6
# -*- coding: utf-8 -*-
import asyncio
import functools
def no_block(func):
"""Turns a blocking function into a non-blocking coroutine function."""
@functools.wraps(func)
async def no_blocking_handler(*args, **kwargs):
partial = functools.partial(func, *args, **kwargs)
return await asyncio.get_event_loop().run_in_executor(None, partial)
return no_blocking_handler