forked from goodboy/tractor
Add `._raise_on_lag` flag to disable `Lag` raising
parent
c8efcdd0d3
commit
2707a0e971
|
@ -33,7 +33,9 @@ from trio._core._run import Task
|
|||
from trio.abc import ReceiveChannel
|
||||
from trio.lowlevel import current_task
|
||||
from msgspec import Struct
|
||||
from tractor.log import get_logger
|
||||
|
||||
log = get_logger(__name__)
|
||||
|
||||
# A regular invariant generic type
|
||||
T = TypeVar("T")
|
||||
|
@ -152,6 +154,7 @@ class BroadcastReceiver(ReceiveChannel):
|
|||
rx_chan: AsyncReceiver,
|
||||
state: BroadcastState,
|
||||
receive_afunc: Optional[Callable[[], Awaitable[Any]]] = None,
|
||||
raise_on_lag: bool = False,
|
||||
|
||||
) -> None:
|
||||
|
||||
|
@ -170,6 +173,7 @@ class BroadcastReceiver(ReceiveChannel):
|
|||
self._rx = rx_chan
|
||||
self._recv = receive_afunc or rx_chan.receive
|
||||
self._closed: bool = False
|
||||
self._raise_on_lag = raise_on_lag
|
||||
|
||||
def receive_nowait(
|
||||
self,
|
||||
|
@ -218,7 +222,12 @@ class BroadcastReceiver(ReceiveChannel):
|
|||
|
||||
# this task was overrun by the producer side
|
||||
task: Task = current_task()
|
||||
raise Lagged(f'Task {task.name} was overrun')
|
||||
msg = f'Task {task.name} was overrun'
|
||||
|
||||
if self._raise_on_lag:
|
||||
raise Lagged(msg)
|
||||
else:
|
||||
log.warning(msg)
|
||||
|
||||
state.subs[key] -= 1
|
||||
return value
|
||||
|
|
Loading…
Reference in New Issue