Skip to content

planning towards supporting fully mixed sync/async hook calling #378

Open
@RonnyPfannschmidt

Description

@RonnyPfannschmidt

cc @simonw

this is a rough outline of supporting async hook calls and awaitable results in

the starting point will be a async hook caller that will call sync and async hook, deferring all awaitables to the event loop

nesting like async->sync->async will trigger failures when awaitables are encountered in the inner loop

the next level will be deferring all sync calls to a thread executor
any sync call that triggers a awaitable, will steal one thread of that pool , this is considered acceptable as execution is typically expected to be fairly non-concurrent (based on pytest)

a own threadpool with a maxium size of 10 ? shal be used (this accounts for the expectation that hooks run in order and should not nest to arbitrary levels)

nonblocking sync hooks may be marked as nonblocking
in which case they may run in the mainloop, as before nesting async into sync will trigger errros

the primary use case for nonblocking sync hooks is to support being nested into other legacy hooks without causing issues but transparently working with modern hook calls

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions