diff --git a/src/engineio/async_client.py b/src/engineio/async_client.py index 7b533280..9c692172 100644 --- a/src/engineio/async_client.py +++ b/src/engineio/async_client.py @@ -1,4 +1,5 @@ import asyncio +import inspect import signal import ssl import threading @@ -456,7 +457,7 @@ async def _trigger_event(self, event, *args, **kwargs): run_async = kwargs.pop('run_async', False) ret = None if event in self.handlers: - if asyncio.iscoroutinefunction(self.handlers[event]) is True: + if inspect.iscoroutinefunction(self.handlers[event]) is True: if run_async: task = self.start_background_task(self.handlers[event], *args) diff --git a/src/engineio/async_drivers/aiohttp.py b/src/engineio/async_drivers/aiohttp.py index a68d3094..ee20cc6b 100644 --- a/src/engineio/async_drivers/aiohttp.py +++ b/src/engineio/async_drivers/aiohttp.py @@ -1,4 +1,4 @@ -import asyncio +import inspect import sys from urllib.parse import urlsplit @@ -105,7 +105,7 @@ async def send(self, message): f = self._sock.send_bytes else: f = self._sock.send_str - if asyncio.iscoroutinefunction(f): + if inspect.iscoroutinefunction(f): await f(message) else: f(message) diff --git a/src/engineio/async_drivers/asgi.py b/src/engineio/async_drivers/asgi.py index bd502261..6ebd3167 100644 --- a/src/engineio/async_drivers/asgi.py +++ b/src/engineio/async_drivers/asgi.py @@ -1,6 +1,6 @@ import os import sys -import asyncio +import inspect from engineio.static_files import get_static_file @@ -102,7 +102,7 @@ async def lifespan(self, scope, receive, send): if self.on_startup: try: await self.on_startup() \ - if asyncio.iscoroutinefunction(self.on_startup) \ + if inspect.iscoroutinefunction(self.on_startup) \ else self.on_startup() except: await send({'type': 'lifespan.startup.failed'}) @@ -112,7 +112,7 @@ async def lifespan(self, scope, receive, send): if self.on_shutdown: try: await self.on_shutdown() \ - if asyncio.iscoroutinefunction(self.on_shutdown) \ + if inspect.iscoroutinefunction(self.on_shutdown) \ else self.on_shutdown() except: await send({'type': 'lifespan.shutdown.failed'}) diff --git a/src/engineio/async_server.py b/src/engineio/async_server.py index d17f44a8..ba2cc4a8 100644 --- a/src/engineio/async_server.py +++ b/src/engineio/async_server.py @@ -1,4 +1,5 @@ import asyncio +import inspect import urllib from . import base_server @@ -209,7 +210,7 @@ async def handle_request(self, *args, **kwargs): Note: this method is a coroutine. """ translate_request = self._async['translate_request'] - if asyncio.iscoroutinefunction(translate_request): + if inspect.iscoroutinefunction(translate_request): environ = await translate_request(*args, **kwargs) else: environ = translate_request(*args, **kwargs) @@ -416,7 +417,7 @@ def create_event(self, *args, **kwargs): async def _make_response(self, response_dict, environ): cors_headers = self._cors_headers(environ) make_response = self._async['make_response'] - if asyncio.iscoroutinefunction(make_response): + if inspect.iscoroutinefunction(make_response): response = await make_response( response_dict['status'], response_dict['headers'] + cors_headers, @@ -488,7 +489,7 @@ async def _trigger_event(self, event, *args, **kwargs): run_async = kwargs.pop('run_async', False) ret = None if event in self.handlers: - if asyncio.iscoroutinefunction(self.handlers[event]): + if inspect.iscoroutinefunction(self.handlers[event]): async def run_async_handler(): try: return await self.handlers[event](*args)