From ccd6f14efc9f74f0e7a33aa97e5b6b3303b66f49 Mon Sep 17 00:00:00 2001 From: Mr-Blob <28756178+Mr-Blob@users.noreply.github.com> Date: Tue, 19 Jun 2018 10:02:21 +0000 Subject: [PATCH] Create noblock.py --- src/cogs/utils/noblock.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 src/cogs/utils/noblock.py diff --git a/src/cogs/utils/noblock.py b/src/cogs/utils/noblock.py new file mode 100644 index 0000000..d1ba88f --- /dev/null +++ b/src/cogs/utils/noblock.py @@ -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