Enable `Context` backpressure by default; avoid startup race-crashes?

ctx_cancel_semantics_and_overruns
Tyler Goodlet 2023-03-07 16:58:33 -05:00
parent e5ee2e3de8
commit cfb2bc0fee
1 changed files with 16 additions and 12 deletions

View File

@ -390,9 +390,13 @@ class Context:
# only set on the callee side # only set on the callee side
_scope_nursery: Optional[trio.Nursery] = None _scope_nursery: Optional[trio.Nursery] = None
_backpressure: bool = False _backpressure: bool = True
async def send_yield(self, data: Any) -> None: async def send_yield(
self,
data: Any,
) -> None:
warnings.warn( warnings.warn(
"`Context.send_yield()` is now deprecated. " "`Context.send_yield()` is now deprecated. "
@ -466,7 +470,7 @@ class Context:
async def cancel( async def cancel(
self, self,
msg: Optional[str] = None, msg: str | None = None,
) -> None: ) -> None:
''' '''
@ -535,8 +539,8 @@ class Context:
async def open_stream( async def open_stream(
self, self,
backpressure: Optional[bool] = True, backpressure: bool | None = True,
msg_buffer_size: Optional[int] = None, msg_buffer_size: int | None = None,
) -> AsyncGenerator[MsgStream, None]: ) -> AsyncGenerator[MsgStream, None]:
''' '''
@ -677,7 +681,7 @@ class Context:
async def started( async def started(
self, self,
value: Optional[Any] = None value: Any | None = None
) -> None: ) -> None:
''' '''
@ -705,10 +709,10 @@ class Context:
def stream(func: Callable) -> Callable: def stream(func: Callable) -> Callable:
"""Mark an async function as a streaming routine with ``@stream``. '''
Mark an async function as a streaming routine with ``@stream``.
""" '''
# annotate
# TODO: apply whatever solution ``mypy`` ends up picking for this: # TODO: apply whatever solution ``mypy`` ends up picking for this:
# https://github.com/python/mypy/issues/2087#issuecomment-769266912 # https://github.com/python/mypy/issues/2087#issuecomment-769266912
func._tractor_stream_function = True # type: ignore func._tractor_stream_function = True # type: ignore
@ -737,10 +741,10 @@ def stream(func: Callable) -> Callable:
def context(func: Callable) -> Callable: def context(func: Callable) -> Callable:
"""Mark an async function as a streaming routine with ``@context``. '''
Mark an async function as a streaming routine with ``@context``.
""" '''
# annotate
# TODO: apply whatever solution ``mypy`` ends up picking for this: # TODO: apply whatever solution ``mypy`` ends up picking for this:
# https://github.com/python/mypy/issues/2087#issuecomment-769266912 # https://github.com/python/mypy/issues/2087#issuecomment-769266912
func._tractor_context_function = True # type: ignore func._tractor_context_function = True # type: ignore