-
Notifications
You must be signed in to change notification settings - Fork 140
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Added opt-in locking of first detected async backend #736
base: master
Are you sure you want to change the base?
Conversation
src/anyio/_core/_eventloop.py
Outdated
if asynclib_name is None: | ||
asynclib_name = sniffio.current_async_library() | ||
if os.getenv("PYTEST_CURRENT_TEST"): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
not ANYIO_BACKEND
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah...this must be a leftover from my alternate solutions. I'll see if I can improve this further.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actually I don't think it should be ANYIO_BACKEND
either. You'll figure it out :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think I got it right this time around.
Changes
Prompted by #543, this adds an optimization, enabled by the
ANYIO_BACKEND
environment variable, for skipping the costly sniffio automatic async backend detection after the first call. Whatever backend is detected is assumed to be running on every call since. This avoids thegetpid()
system calls in this extremely often called function.Checklist
If this is a user-facing code change, like a bugfix or a new feature, please ensure that
you've fulfilled the following conditions (where applicable):
tests/
) added which would fail without your patchdocs/
, in case of behavior changes or newfeatures)
docs/versionhistory.rst
).If this is a trivial change, like a typo fix or a code reformatting, then you can ignore
these instructions.
Updating the changelog
If there are no entries after the last release, use
**UNRELEASED**
as the version.If, say, your patch fixes issue #123, the entry should look like this:
* Fix big bad boo-boo in task groups (#123 <https://github.com/agronholm/anyio/issues/123>_; PR by Yourname)
If there's no issue linked, just link to your pull request instead by updating the
changelog after you've created the PR.
If possible, use your real name in the changelog entry. If not, use your GitHub
username.