diff --git a/panini/middleware/error.py b/panini/middleware/error.py index ea6681e..3cfd95c 100644 --- a/panini/middleware/error.py +++ b/panini/middleware/error.py @@ -28,7 +28,10 @@ async def send_any(self, subject: str, message, send_func, *args, **kwargs): async def listen_any(self, msg, callback): try: - response = await callback(msg) + if asyncio.iscoroutinefunction(callback): + response = await callback(msg) + else: + response = callback(msg) return response except self.error as e: if asyncio.iscoroutinefunction(self.callback): diff --git a/panini/middleware/prometheus_monitoring.py b/panini/middleware/prometheus_monitoring.py index 91fa626..eac6ddc 100644 --- a/panini/middleware/prometheus_monitoring.py +++ b/panini/middleware/prometheus_monitoring.py @@ -1,3 +1,4 @@ +import asyncio import time from prometheus_client import CollectorRegistry, Histogram, Counter, push_to_gateway @@ -104,7 +105,10 @@ async def listen_any(self, msg, callback): if "status" in self.labels: try: - response = await callback(msg) + if asyncio.iscoroutinefunction(callback): + response = await callback(msg) + else: + response = callback(msg) except Exception: labels["status"] = "failure" self.monitor_listen(start_time, labels) @@ -112,7 +116,10 @@ async def listen_any(self, msg, callback): else: labels["status"] = "success" else: - response = await callback(msg) + if asyncio.iscoroutinefunction(callback): + response = await callback(msg) + else: + response = callback(msg) self.monitor_listen(start_time, labels) diff --git a/panini/middleware/reader_emulator_middleware.py b/panini/middleware/reader_emulator_middleware.py index 566c345..36174fa 100644 --- a/panini/middleware/reader_emulator_middleware.py +++ b/panini/middleware/reader_emulator_middleware.py @@ -1,3 +1,4 @@ +import asyncio import uuid from panini.app import get_app @@ -38,7 +39,10 @@ def __init__(self, *args, **kwargs): async def listen_any(self, message: Msg, callback): message.subject = message.subject[len(self._prefix) + 1 :] - response = await callback(message) + if asyncio.iscoroutinefunction(callback): + response = await callback(message) + else: + response = callback(message) return response async def send_any(self, subject: str, message, send_func, *args, **kwargs): diff --git a/panini/middleware/writer_emulator_middleware.py b/panini/middleware/writer_emulator_middleware.py index 01af282..fac0e7d 100644 --- a/panini/middleware/writer_emulator_middleware.py +++ b/panini/middleware/writer_emulator_middleware.py @@ -1,3 +1,4 @@ +import asyncio import json import os import threading @@ -116,11 +117,17 @@ async def listen_publish(self, msg, callback): } ) - await callback(msg) + if asyncio.iscoroutinefunction(callback): + await callback(msg) + else: + callback(msg) async def listen_request(self, msg, callback): - response = await callback(msg) + if asyncio.iscoroutinefunction(callback): + response = await callback(msg) + else: + response = callback(msg) self._writer.add( {