#!/usr/bin/env python3 import sys import asyncio def get_event_loop(): if get_event_loop.loop: return get_event_loop.loop try: loop = asyncio.get_running_loop() except RuntimeError: if sys.platform != 'win32': loop = asyncio.new_event_loop() else: loop = asyncio.ProactorEventLoop() get_event_loop.loop = loop return loop get_event_loop.loop = None def create_function(conn, name, num_params, func, deterministic=False): original_create_function = conn._create_function if hasattr(conn, '_create_function') else conn.create_function if conn.create_function == create_function: fn = conn._create_function if asyncio.iscoroutinefunction(func): return original_create_function(name, num_params, (lambda *args: get_event_loop().run_until_complete(func(*args))), deterministic=deterministic) else: return original_create_function(name, num_params, func, deterministic=deterministic) __all__ = ['create_function']