-
Notifications
You must be signed in to change notification settings - Fork 3
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
Update dependency fastapi to <=0.109.1 [SECURITY] - autoclosed #36
Closed
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
renovate
bot
force-pushed
the
renovate/pypi-fastapi-vulnerability
branch
from
February 17, 2024 13:39
87c606c
to
7ba0394
Compare
renovate
bot
changed the title
Update dependency fastapi to <=0.109.1 [SECURITY]
Update dependency fastapi to <=0.109.2 [SECURITY]
Feb 17, 2024
renovate
bot
force-pushed
the
renovate/pypi-fastapi-vulnerability
branch
from
February 17, 2024 16:40
7ba0394
to
ddc22b8
Compare
renovate
bot
changed the title
Update dependency fastapi to <=0.109.2 [SECURITY]
Update dependency fastapi to <=0.109.1 [SECURITY]
Feb 17, 2024
renovate
bot
force-pushed
the
renovate/pypi-fastapi-vulnerability
branch
from
February 25, 2024 06:24
ddc22b8
to
70d0c57
Compare
renovate
bot
changed the title
Update dependency fastapi to <=0.109.1 [SECURITY]
Update dependency fastapi to <=0.110.0 [SECURITY]
Feb 25, 2024
renovate
bot
force-pushed
the
renovate/pypi-fastapi-vulnerability
branch
from
February 25, 2024 11:41
70d0c57
to
5d145df
Compare
renovate
bot
changed the title
Update dependency fastapi to <=0.110.0 [SECURITY]
Update dependency fastapi to <=0.109.1 [SECURITY]
Feb 25, 2024
renovate
bot
changed the title
Update dependency fastapi to <=0.109.1 [SECURITY]
Update dependency fastapi to <=0.110.0 [SECURITY]
Feb 29, 2024
renovate
bot
force-pushed
the
renovate/pypi-fastapi-vulnerability
branch
2 times, most recently
from
February 29, 2024 13:07
1059745
to
091e2d0
Compare
renovate
bot
changed the title
Update dependency fastapi to <=0.110.0 [SECURITY]
Update dependency fastapi to <=0.109.1 [SECURITY]
Feb 29, 2024
renovate
bot
force-pushed
the
renovate/pypi-fastapi-vulnerability
branch
from
March 12, 2024 11:23
091e2d0
to
3f99e94
Compare
renovate
bot
changed the title
Update dependency fastapi to <=0.109.1 [SECURITY]
Update dependency fastapi to <=0.110.0 [SECURITY]
Mar 12, 2024
renovate
bot
force-pushed
the
renovate/pypi-fastapi-vulnerability
branch
from
March 12, 2024 15:14
3f99e94
to
b3ff88c
Compare
renovate
bot
changed the title
Update dependency fastapi to <=0.110.0 [SECURITY]
Update dependency fastapi to <=0.109.1 [SECURITY]
Mar 12, 2024
renovate
bot
force-pushed
the
renovate/pypi-fastapi-vulnerability
branch
from
March 24, 2024 16:20
b3ff88c
to
91e28ae
Compare
renovate
bot
changed the title
Update dependency fastapi to <=0.109.1 [SECURITY]
Update dependency fastapi to <=0.110.0 [SECURITY]
Mar 24, 2024
renovate
bot
force-pushed
the
renovate/pypi-fastapi-vulnerability
branch
from
March 24, 2024 19:47
91e28ae
to
35609ef
Compare
renovate
bot
changed the title
Update dependency fastapi to <=0.110.0 [SECURITY]
Update dependency fastapi to <=0.109.1 [SECURITY]
Mar 24, 2024
renovate
bot
force-pushed
the
renovate/pypi-fastapi-vulnerability
branch
from
April 14, 2024 11:47
35609ef
to
d3f0bf1
Compare
renovate
bot
changed the title
Update dependency fastapi to <=0.109.1 [SECURITY]
Update dependency fastapi to <=0.110.1 [SECURITY]
Apr 14, 2024
renovate
bot
force-pushed
the
renovate/pypi-fastapi-vulnerability
branch
from
April 14, 2024 13:28
d3f0bf1
to
6a19d5e
Compare
renovate
bot
changed the title
Update dependency fastapi to <=0.110.1 [SECURITY]
Update dependency fastapi to <=0.109.1 [SECURITY]
Apr 14, 2024
renovate
bot
force-pushed
the
renovate/pypi-fastapi-vulnerability
branch
from
May 1, 2024 14:05
6a19d5e
to
99c7b32
Compare
renovate
bot
changed the title
Update dependency fastapi to <=0.109.1 [SECURITY]
Update dependency fastapi to <=0.110.3 [SECURITY]
May 1, 2024
renovate
bot
force-pushed
the
renovate/pypi-fastapi-vulnerability
branch
from
May 1, 2024 15:02
99c7b32
to
f283045
Compare
renovate
bot
changed the title
Update dependency fastapi to <=0.110.3 [SECURITY]
Update dependency fastapi to <=0.109.1 [SECURITY]
May 1, 2024
renovate
bot
force-pushed
the
renovate/pypi-fastapi-vulnerability
branch
from
May 9, 2024 11:05
f283045
to
4a99dd1
Compare
renovate
bot
changed the title
Update dependency fastapi to <=0.109.1 [SECURITY]
Update dependency fastapi to <=0.111.0 [SECURITY]
May 9, 2024
renovate
bot
force-pushed
the
renovate/pypi-fastapi-vulnerability
branch
from
May 9, 2024 13:34
4a99dd1
to
f4d8a4c
Compare
renovate
bot
changed the title
Update dependency fastapi to <=0.111.0 [SECURITY]
Update dependency fastapi to <=0.109.1 [SECURITY]
May 9, 2024
renovate
bot
force-pushed
the
renovate/pypi-fastapi-vulnerability
branch
from
May 15, 2024 16:41
f4d8a4c
to
f51c989
Compare
renovate
bot
changed the title
Update dependency fastapi to <=0.109.1 [SECURITY]
Update dependency fastapi to <=0.111.0 [SECURITY]
May 15, 2024
renovate
bot
force-pushed
the
renovate/pypi-fastapi-vulnerability
branch
from
May 16, 2024 00:57
f51c989
to
fc30235
Compare
renovate
bot
changed the title
Update dependency fastapi to <=0.111.0 [SECURITY]
Update dependency fastapi to <=0.109.1 [SECURITY]
May 16, 2024
renovate
bot
force-pushed
the
renovate/pypi-fastapi-vulnerability
branch
from
June 4, 2024 23:20
fc30235
to
40390be
Compare
renovate
bot
changed the title
Update dependency fastapi to <=0.109.1 [SECURITY]
Update dependency fastapi to <=0.111.0 [SECURITY]
Jun 4, 2024
renovate
bot
force-pushed
the
renovate/pypi-fastapi-vulnerability
branch
from
June 5, 2024 00:18
40390be
to
83be1fa
Compare
renovate
bot
changed the title
Update dependency fastapi to <=0.111.0 [SECURITY]
Update dependency fastapi to <=0.109.1 [SECURITY]
Jun 5, 2024
renovate
bot
force-pushed
the
renovate/pypi-fastapi-vulnerability
branch
from
June 27, 2024 08:00
83be1fa
to
80d9742
Compare
renovate
bot
changed the title
Update dependency fastapi to <=0.109.1 [SECURITY]
Update dependency fastapi to <=0.111.0 [SECURITY]
Jun 27, 2024
renovate
bot
force-pushed
the
renovate/pypi-fastapi-vulnerability
branch
from
June 27, 2024 09:29
80d9742
to
eb6ba1e
Compare
renovate
bot
changed the title
Update dependency fastapi to <=0.111.0 [SECURITY]
Update dependency fastapi to <=0.109.1 [SECURITY]
Jun 27, 2024
renovate
bot
force-pushed
the
renovate/pypi-fastapi-vulnerability
branch
from
July 14, 2024 11:04
eb6ba1e
to
bd58c50
Compare
renovate
bot
changed the title
Update dependency fastapi to <=0.109.1 [SECURITY]
Update dependency fastapi to <=0.111.0 [SECURITY]
Jul 14, 2024
renovate
bot
force-pushed
the
renovate/pypi-fastapi-vulnerability
branch
from
July 14, 2024 14:13
bd58c50
to
b514179
Compare
renovate
bot
changed the title
Update dependency fastapi to <=0.111.0 [SECURITY]
Update dependency fastapi to <=0.109.1 [SECURITY]
Jul 14, 2024
renovate
bot
force-pushed
the
renovate/pypi-fastapi-vulnerability
branch
from
July 26, 2024 13:51
b514179
to
cbcdee8
Compare
renovate
bot
changed the title
Update dependency fastapi to <=0.109.1 [SECURITY]
Update dependency fastapi to <=0.111.1 [SECURITY]
Jul 26, 2024
renovate
bot
force-pushed
the
renovate/pypi-fastapi-vulnerability
branch
from
July 26, 2024 15:16
cbcdee8
to
fe1ad6b
Compare
renovate
bot
changed the title
Update dependency fastapi to <=0.111.1 [SECURITY]
Update dependency fastapi to <=0.109.1 [SECURITY]
Jul 26, 2024
renovate
bot
force-pushed
the
renovate/pypi-fastapi-vulnerability
branch
from
July 28, 2024 15:42
fe1ad6b
to
a8fe07a
Compare
renovate
bot
changed the title
Update dependency fastapi to <=0.109.1 [SECURITY]
Update dependency fastapi to <=0.111.1 [SECURITY]
Jul 28, 2024
renovate
bot
force-pushed
the
renovate/pypi-fastapi-vulnerability
branch
from
July 28, 2024 20:08
a8fe07a
to
db2ddfe
Compare
renovate
bot
changed the title
Update dependency fastapi to <=0.111.1 [SECURITY]
Update dependency fastapi to <=0.109.1 [SECURITY]
Jul 28, 2024
renovate
bot
changed the title
Update dependency fastapi to <=0.109.1 [SECURITY]
Update dependency fastapi to <=0.109.1 [SECURITY] - autoclosed
Sep 23, 2024
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
None yet
0 participants
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
<=0.103.1
-><=0.109.1
GitHub Vulnerability Alerts
CVE-2024-24762
Summary
When using form data,
python-multipart
uses a Regular Expression to parse the HTTPContent-Type
header, including options.An attacker could send a custom-made
Content-Type
option that is very difficult for the RegEx to process, consuming CPU resources and stalling indefinitely (minutes or more) while holding the main event loop. This means that process can't handle any more requests.This can create a ReDoS (Regular expression Denial of Service): https://owasp.org/www-community/attacks/Regular_expression_Denial_of_Service_-_ReDoS
This only applies when the app uses form data, parsed with
python-multipart
.Details
A regular HTTP
Content-Type
header could look like:python-multipart
parses the option with this RegEx: https://github.com/andrew-d/python-multipart/blob/d3d16dae4b061c34fe9d3c9081d9800c49fc1f7a/multipart/multipart.py#L72-L74A custom option could be made and sent to the server to break it with:
PoC
Create a simple WSGI application, that just parses the
Content-Type
, and run it withpython main.py
:Then send the attacking request with:
$ curl -v -X 'POST' -H $'Content-Type: application/x-www-form-urlencoded; !=\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' --data-binary 'input=1' 'http://localhost:8123/'
Impact
It's a ReDoS, (Regular expression Denial of Service), it only applies to those reading form data. This way it also affects other libraries using Starlette, like FastAPI.
Original Report
This was originally reported to FastAPI as an email to security@tiangolo.com, sent via https://huntr.com/, the original reporter is Marcello, https://github.com/byt3bl33d3r
Original report to FastAPI
Hey Tiangolo!
My name's Marcello and I work on the ProtectAI/Huntr Threat Research team, a few months ago we got a report (from @nicecatch2000) of a ReDoS affecting another very popular Python web framework. After some internal research, I found that FastAPI is vulnerable to the same ReDoS under certain conditions (only when it parses Form data not JSON).
Here are the details: I'm using the latest version of FastAPI (0.109.0) and the following code:
I'm running the above with uvicorn with the following command:
uvicorn server:app
Then run the following cUrl command:
You'll see the server locks up, is unable to serve anymore requests and one CPU core is pegged to 100%
You can even start uvicorn with multiple workers with the --workers 4 argument and as long as you send (workers + 1) requests you'll completely DoS the FastApi server.
If you try submitting Json to the /submit_json endpoint with the malicious Content-Type header you'll see it isn't vulnerable. So this only affects FastAPI when it parses Form data.
Cheers
Impact
An attacker is able to cause a DoS on a FastApi server via a malicious Content-Type header if it parses Form data.
Occurrences
params.py L586
Release Notes
fastapi/fastapi (fastapi)
v0.109.1
Compare Source
Security fixes
python-multipart
to>=0.0.7
to fix a vulnerability when using form data with a ReDos attack. You can also simply upgradepython-multipart
.Read more in the advisory: Content-Type Header ReDoS.
Features
Refactors
fastapi/utils.py
. PR #10576 by @eukub.tests/test_tutorial/test_header_params/test_tutorial003.py
after fix in Starlette. PR #10904 by @ooknimm.Docs
help-fastapi.md
. PR #11040 by @tiangolo.fastapi/security/oauth2.py
. PR #10972 by @RafalSkolasinski.HTTPException
details indocs/en/docs/tutorial/handling-errors.md
. PR #5418 by @papb.docs/de/docs/tutorial/first-steps.md
. PR #10959 by @nilslindemann.docs/en/docs/advanced/async-tests.md
. PR #10960 by @nilslindemann.docs/tutorial/sql-databases.md
in several languages. PR #10716 by @theoohoho.external_links.yml
. PR #10943 by @Torabek.url_for
. PR #5937 by @EzzEddin.docs/en/docs/tutorial/bigger-applications.md
. PR #5490 by @papb.docs/en/docs/tutorial/static-files.md
. PR #10243 by @hungtsetse.en/docs/contributing.md
. PR #10480 by @nilslindemann.tutorial/bigger-applications.md
. PR #10552 by @nilslindemann.docs/en/docs/advanced/path-operation-advanced-configuration.md
. PR #10826 by @ahmedabdou14.Translations
docs/es/docs/external-links.md
. PR #10933 by @pablocm83.docs/ko/docs/tutorial/first-steps.md
,docs/ko/docs/tutorial/index.md
,docs/ko/docs/tutorial/path-params.md
, anddocs/ko/docs/tutorial/query-params.md
. PR #4218 by @SnowSuno.docs/zh/docs/tutorial/dependencies/dependencies-with-yield.md
. PR #10870 by @zhiquanchi.docs/zh/docs/deployment/concepts.md
. PR #10282 by @xzmeng.docs/az/docs/index.md
. PR #11047 by @aykhans.docs/ko/docs/tutorial/middleware.md
. PR #2829 by @JeongHyeongKim.docs/de/docs/tutorial/body-nested-models.md
. PR #10313 by @nilslindemann.docs/fa/docs/tutorial/middleware.md
. PR #9695 by @mojtabapaso.docs/fa/docs/index.md
. PR #10216 by @theonlykingpin.docs/de/docs/tutorial/body-fields.md
. PR #10310 by @nilslindemann.docs/de/docs/tutorial/body.md
. PR #10295 by @nilslindemann.docs/de/docs/tutorial/body-multiple-params.md
. PR #10308 by @nilslindemann.docs/ja/docs/tutorial/security/get-current-user.md
. PR #2681 by @sh0nk.docs/zh/docs/advanced/advanced-dependencies.md
. PR #3798 by @jaystone776.docs/zh/docs/advanced/events.md
. PR #3815 by @jaystone776.docs/zh/docs/advanced/behind-a-proxy.md
. PR #3820 by @jaystone776.docs/zh/docs/advanced/testing-events.md
. PR #3818 by @jaystone776.docs/zh/docs/advanced/testing-websockets.md
. PR #3817 by @jaystone776.docs/zh/docs/advanced/testing-database.md
. PR #3821 by @jaystone776.docs/zh/docs/deployment/deta.md
. PR #3837 by @jaystone776.docs/zh/docs/history-design-future.md
. PR #3832 by @jaystone776.docs/zh/docs/project-generation.md
. PR #3831 by @jaystone776.docs/zh/docs/deployment/docker.md
. PR #10296 by @xzmeng.docs/es/docs/features.md
. PR #10884 by @pablocm83.docs/es/docs/newsletter.md
. PR #10922 by @pablocm83.docs/ko/docs/tutorial/background-tasks.md
. PR #5910 by @junah201.docs/tr/docs/alternatives.md
. PR #10502 by @alperiox.docs/ko/docs/tutorial/dependencies/index.md
. PR #10989 by @KaniKim./docs/ko/docs/tutorial/body.md
. PR #11000 by @KaniKim.docs/pt/docs/tutorial/schema-extra-example.md
. PR #4065 by @luccasmmg.docs/tr/docs/history-design-future.md
. PR #11012 by @hasansezertasan.docs/tr/docs/resources/index.md
. PR #11020 by @hasansezertasan.docs/tr/docs/how-to/index.md
. PR #11021 by @hasansezertasan.docs/de/docs/tutorial/query-params.md
. PR #10293 by @nilslindemann.docs/de/docs/benchmarks.md
. PR #10866 by @nilslindemann.docs/tr/docs/learn/index.md
. PR #11014 by @hasansezertasan.docs/fa/docs/tutorial/security/index.md
. PR #9945 by @mojtabapaso.docs/tr/docs/help/index.md
. PR #11013 by @hasansezertasan.docs/tr/docs/about/index.md
. PR #11006 by @hasansezertasan.docs/tr/docs/benchmarks.md
. PR #11005 by @hasansezertasan.docs/it/docs/index.md
. PR #5233 by @matteospanio.docs/ko/docs/help/index.md
. PR #10983 by @KaniKim.docs/ko/docs/features.md
. PR #10976 by @KaniKim.docs/ko/docs/tutorial/security/get-current-user.md
. PR #5737 by @KdHyeon0661.docs/ru/docs/tutorial/security/first-steps.md
. PR #10541 by @AlertRED.docs/ru/docs/tutorial/handling-errors.md
. PR #10375 by @AlertRED.docs/ru/docs/tutorial/encoder.md
. PR #10374 by @AlertRED.docs/ru/docs/tutorial/body-updates.md
. PR #10373 by @AlertRED.fastapi-people.md
.. PR #10255 by @NiKuma0.docs/ja/docs/tutorial/security/index.md
. PR #5798 by @3w36zj6.docs/de/docs/advanced/generate-clients.md
. PR #10725 by @nilslindemann.docs/de/docs/advanced/openapi-webhooks.md
. PR #10712 by @nilslindemann.docs/de/docs/advanced/custom-response.md
. PR #10624 by @nilslindemann.docs/de/docs/advanced/additional-status-codes.md
. PR #10617 by @nilslindemann.docs/de/docs/tutorial/middleware.md
. PR #10391 by @JohannesJungbluth.docs/ja/docs/tutorial/encoder.md
. PR #1955 by @SwftAlpc.docs/ja/docs/tutorial/extra-data-types.md
. PR #1932 by @SwftAlpc.docs/tr/docs/async.md
. PR #5191 by @BilalAlpaslan.docs/tr/docs/project-generation.md
. PR #5192 by @BilalAlpaslan.docs/ko/docs/deployment/docker.md
. PR #5657 by @nearnear.docs/ko/docs/deployment/server-workers.md
. PR #4935 by @jujumilk3.docs/ko/docs/deployment/index.md
. PR #4561 by @jujumilk3.docs/ko/docs/tutorial/path-operation-configuration.md
. PR #3639 by @jungsu-kwon.zh
- Traditional Chinese. PR #10889 by @cherinyy.docs/ko/docs/tutorial/static-files.md
. PR #2957 by @jeesang7.docs/ko/docs/tutorial/response-model.md
. PR #2766 by @hard-coders.docs/ko/docs/tutorial/body-multiple-params.md
. PR #2461 by @PandaHun.docs/ko/docs/tutorial/query-params-str-validations.md
. PR #2415 by @hard-coders.docs/ko/docs/python-types.md
. PR #2267 by @jrim.docs/ko/docs/tutorial/body-nested-models.md
. PR #2506 by @hard-coders.docs/ko/docs/learn/index.md
. PR #10977 by @KaniKim.docs/de/docs/tutorial/index.md
. PR #10962 by @nilslindemann.docs/ko/docs/tutorial/path-params.md
. PR #10758 by @2chanhaeng.docs/ja/docs/tutorial/dependencies/dependencies-with-yield.md
. PR #1961 by @SwftAlpc.docs/ja/docs/tutorial/dependencies/dependencies-in-path-operation-decorators.md
. PR #1960 by @SwftAlpc.docs/ja/docs/tutorial/dependencies/sub-dependencies.md
. PR #1959 by @SwftAlpc.docs/ja/docs/tutorial/background-tasks.md
. PR #2668 by @tokusumi.docs/ja/docs/tutorial/dependencies/index.md
anddocs/ja/docs/tutorial/dependencies/classes-as-dependencies.md
. PR #1958 by @SwftAlpc.docs/ja/docs/tutorial/response-model.md
. PR #1938 by @SwftAlpc.docs/ja/docs/tutorial/body-multiple-params.md
. PR #1903 by @SwftAlpc.docs/ja/docs/tutorial/path-params-numeric-validations.md
. PR #1902 by @SwftAlpc.docs/ja/docs/python-types.md
. PR #1899 by @SwftAlpc.docs/ja/docs/tutorial/handling-errors.md
. PR #1953 by @SwftAlpc.docs/ja/docs/tutorial/response-status-code.md
. PR #1942 by @SwftAlpc.docs/ja/docs/tutorial/extra-models.md
. PR #1941 by @SwftAlpc.docs/ja/docs/tutorial/schema-extra-example.md
. PR #1931 by @SwftAlpc.docs/ja/docs/tutorial/body-nested-models.md
. PR #1930 by @SwftAlpc.docs/ja/docs/tutorial/body-fields.md
. PR #1923 by @SwftAlpc.docs/de/docs/tutorial/index.md
. PR #9502 by @fhabers21.docs/de/docs/tutorial/background-tasks.md
. PR #10566 by @nilslindemann.docs/ru/docs/index.md
. PR #10672 by @Delitel-WEB.docs/zh/docs/tutorial/extra-data-types.md
. PR #10727 by @HiemalBeryl.docs/ru/docs/tutorial/dependencies/classes-as-dependencies.md
. PR #10410 by @AlertRED.Internal
mkdocs.yml
. PR #11016 by @alejsdev.mkdocs.yml
languages in CI, updatedocs.py
. PR #11009 by @tiangolo.label-approved.yml
to accept translations with 1 reviewer. PR #11007 by @alejsdev.zh-hant
. PR #10950 by @tiangolo.v0.109.0
Compare Source
Features
Upgrades
>=0.29.0,<0.33.0
, update docs and usage of templates with new Starlette arguments. Remove pin of AnyIO>=3.7.1,<4.0.0
, add support for AnyIO 4.x.x. PR #10846 by @tiangolo.Docs
docs/en/docs/alternatives.md
. PR #10931 by @s111d.email
withusername
indocs_src/security/tutorial007
code examples. PR #10649 by @nilslindemann..model_dump()
. PR #10929 by @tiangolo.docs/en/docs/tutorial/sql-databases.md
. PR #10765 by @HurSungYun.docs/en/docs/alternatives.md
anddocs/en/docs/tutorial/dependencies/index.md
. PR #10906 by @s111d.docs/en/docs/tutorial/dependencies/dependencies-with-yield.md
. PR #10834 by @Molkree.AsyncClient
. PR #4167 by @andrew-chang-dewitt./docs/reference/exceptions.md
and/en/docs/reference/status.md
. PR #10809 by @clarencepenz.openapi-callbacks.md
. PR #10673 by @kayjan.fastapi/routing.py
. PR #10520 by @sepsh.create_item
withupdate_item
when appropriate. PR #5913 by @OttoAndrey.Translations
docs/bn/docs/index.md
. PR #9177 by @Fahad-Md-Kamal.index.md
in several languages. PR #10711 by @tamago3keran.docs/ru/docs/tutorial/request-forms-and-files.md
. PR #10347 by @AlertRED.docs/uk/docs/index.md
. PR #10362 by @rostik1410.docs/ko/docs/index.md
. PR #10680 by @Eeap.docs/fa/docs/features.md
. PR #5887 by @amirilf.docs/zh/docs/advanced/additional-responses.md
. PR #10325 by @ShuibeiC.docs/ru/docs/tutorial/background-tasks.md
,docs/ru/docs/tutorial/body-nested-models.md
,docs/ru/docs/tutorial/debugging.md
,docs/ru/docs/tutorial/testing.md
. PR #10311 by @AlertRED.docs/ru/docs/tutorial/request-files.md
. PR #10332 by @AlertRED.docs/zh/docs/deployment/server-workers.md
. PR #10292 by @xzmeng.docs/zh/docs/deployment/cloud.md
. PR #10291 by @xzmeng.docs/zh/docs/deployment/manually.md
. PR #10279 by @xzmeng.docs/zh/docs/deployment/https.md
. PR #10277 by @xzmeng.docs/zh/docs/deployment/index.md
. PR #10275 by @xzmeng.docs/de/docs/tutorial/first-steps.md
. PR #9530 by @fhabers21.docs/tr/docs/index.md
. PR #10444 by @hasansezertasan.docs/zh/docs/learn/index.md
. PR #10479 by @KAZAMA-DREAM.docs/ru/docs/learn/index.md
. PR #10539 by @AlertRED.docs/zh/docs/tutorial/sql-databases.md
. PR #9712 by @Royc30ne.docs/tr/docs/external-links.md
. PR #10549 by @hasansezertasan.docs/es/docs/learn/index.md
. PR #10885 by @pablocm83.docs/uk/docs/tutorial/body-fields.md
. PR #10670 by @ArtemKhymenko./docs/hu/docs/index.md
. PR #10812 by @takacs.docs/tr/docs/newsletter.md
. PR #10550 by @hasansezertasan.docs/es/docs/help/index.md
. PR #10907 by @pablocm83.docs/es/docs/about/index.md
. PR #10908 by @pablocm83.docs/es/docs/resources/index.md
. PR #10909 by @pablocm83.Internal
v0.108.0
Compare Source
Upgrades
>=0.29.0,<0.33.0
, update docs and usage of templates with new Starlette arguments. PR #10846 by @tiangolo.v0.107.0
Compare Source
Upgrades
Docs
v0.106.0
Compare Source
Breaking Changes
Using resources from dependencies with
yield
in background tasks is no longer supported.This change is what supports the new features, read below. 🤓
Dependencies with
yield
,HTTPException
and Background TasksDependencies with
yield
now can raiseHTTPException
and other exceptions afteryield
. 🎉Read the new docs here: Dependencies with
yield
andHTTPException
.Before FastAPI 0.106.0, raising exceptions after
yield
was not possible, the exit code in dependencies withyield
was executed after the response was sent, so Exception Handlers would have already run.This was designed this way mainly to allow using the same objects "yielded" by dependencies inside of background tasks, because the exit code would be executed after the background tasks were finished.
Nevertheless, as this would mean waiting for the response to travel through the network while unnecessarily holding a resource in a dependency with yield (for example a database connection), this was changed in FastAPI 0.106.0.
Additionally, a background task is normally an independent set of logic that should be handled separately, with its own resources (e.g. its own database connection).
If you used to rely on this behavior, now you should create the resources for background tasks inside the background task itself, and use internally only data that doesn't depend on the resources of dependencies with
yield
.For example, instead of using the same database session, you would create a new database session inside of the background task, and you would obtain the objects from the database using this new session. And then instead of passing the object from the database as a parameter to the background task function, you would pass the ID of that object and then obtain the object again inside the background task function.
The sequence of execution before FastAPI 0.106.0 was like the diagram in the Release Notes for FastAPI 0.106.0.
The new execution flow can be found in the docs: Execution of dependencies with
yield
.v0.105.0
Compare Source
Features
Annotated[str, Field(), Query()]
. PR #10773 by @tiangolo.Refactors
Docs
Internal
v0.104.1
Compare Source
Fixes
Docs
docs/en/docs/tutorial/metadata.md
. PR #10433 by @worldworm.docs/en/docs/tutorial/path-params.md
. PR #10043 by @giuliowaitforitdavide.docs/en/docs/reference/dependencies.md
. PR #10465 by @suravshresth.docs/en/docs/tutorial/body-nested-models.md
. PR #10468 by @yogabonito.pydantic.Required
indocs/en/docs/tutorial/query-params-str-validations.md
. PR #10469 by @yogabonito.docs/en/docs/reference/index.md
. PR #10467 by @tarsil.Internal
docs/en/docs/async.md
anddocs/zh/docs/async.md
to make them relative. PR #10498 by @hasnatsajid.docs/em/docs/async.md
. PR #10507 by @hasnatsajid.docs/em/docs/index.md
, Python 3.8. PR #10521 by @kerriop.CITATION.cff
file for academic citations. PR #10496 by @tiangolo.v0.104.0
Compare Source
Features
BackgroundTasks
, refactor docs structure. PR #10392 by @tiangolo. New docs at FastAPI Reference - Code API.Upgrades
Internal
v0.103.2
Compare Source
Refactors
Translations
Configuration
📅 Schedule: Branch creation - "" (UTC), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.