diff --git a/docs/en/docs/release-notes.md b/docs/en/docs/release-notes.md index 12d6487aa..d3e652d19 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -7,8 +7,13 @@ hide: ## Latest Changes +### Translations + +* π Add Russian translation for `docs/ru/docs/advanced/websockets.md`. PR [#13279](https://github.com/fastapi/fastapi/pull/13279) by [@Rishat-F](https://github.com/Rishat-F). + ### Internal +* β¬ Bump inline-snapshot from 0.18.1 to 0.19.3. PR [#13298](https://github.com/fastapi/fastapi/pull/13298) by [@dependabot[bot]](https://github.com/apps/dependabot). * π§ Update sponsors, add Permit. PR [#13288](https://github.com/fastapi/fastapi/pull/13288) by [@tiangolo](https://github.com/tiangolo). ## 0.115.8 diff --git a/docs/ru/docs/advanced/websockets.md b/docs/ru/docs/advanced/websockets.md new file mode 100644 index 000000000..bc9dfcbff --- /dev/null +++ b/docs/ru/docs/advanced/websockets.md @@ -0,0 +1,186 @@ +# ΠΠ΅Π±-ΡΠΎΠΊΠ΅ΡΡ + +ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²Π΅Π±-ΡΠΎΠΊΠ΅ΡΡ Π² **FastAPI**. + +## Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° `WebSockets` + +Π£Π±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ [Π²ΠΈΡΡΡΠ°Π»ΡΠ½Π°Ρ ΡΡΠ΅Π΄Π°](../virtual-environments.md){.internal-link target=_blank} ΡΠΎΠ·Π΄Π°Π½Π°, Π°ΠΊΡΠΈΠ²ΠΈΡΡΠΉΡΠ΅ Π΅Ρ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ `websockets`: + +
+
+ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°Π±ΠΈΡΠ°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² ΠΏΠΎΠ»Π΅ Π²Π²ΠΎΠ΄Π° ΠΈ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΈΡ
:
+
+
+
+Π Π²Π°ΡΠ΅ **FastAPI** ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ Π²Π΅Π±-ΡΠΎΠΊΠ΅ΡΠ°ΠΌΠΈ ΠΎΡΠ²Π΅ΡΠΈΡ:
+
+
+
+ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ:
+
+
+
+Π Π²ΡΠ΅ ΠΎΠ½ΠΈ Π±ΡΠ΄ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅ Π²Π΅Π±-ΡΠΎΠΊΠ΅Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅.
+
+## ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ `Depends` ΠΈ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ
+
+ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ· `fastapi` ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΡΠ½Π΄ΠΏΠΎΠΈΠ½ΡΠ΅ Π²Π΅Π±ΡΠΎΠΊΠ΅ΡΠ°:
+
+* `Depends`
+* `Security`
+* `Cookie`
+* `Header`
+* `Path`
+* `Query`
+
+ΠΠ½ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π² Π΄ΡΡΠ³ΠΈΡ
FastAPI ΡΠ½Π΄ΠΏΠΎΠΈΠ½ΡΠ°Ρ
/*ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡ
ΠΏΡΡΠΈ*:
+
+{* ../../docs_src/websockets/tutorial002_an_py310.py hl[68:69,82] *}
+
+/// info | ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅
+
+Π Π²Π΅Π±-ΡΠΎΠΊΠ΅ΡΠ΅ Π²ΡΠ·ΡΠ²Π°ΡΡ `HTTPException` Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ»Π°. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ `WebSocketException`.
+
+ΠΠ°ΠΊΡΡΠ²Π°ΡΡΠΈΠΉ ΡΡΠ°ΡΡΡ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ· valid codes defined in the specification.
+
+///
+
+### ΠΠ΅Π±-ΡΠΎΠΊΠ΅ΡΡ Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ: ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΠΈ
+
+ΠΡΠ»ΠΈ Π²Π°Ρ ΡΠ°ΠΉΠ» Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ `main.py`, ΡΠΎ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:
+
+
+
+## ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ ΠΈ ΡΠ°Π±ΠΎΡΠ° Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌΠΈ
+
+ΠΡΠ»ΠΈ Π²Π΅Π±-ΡΠΎΠΊΠ΅Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π·Π°ΠΊΡΡΡΠΎ, ΡΠΎ `await websocket.receive_text()` Π²ΡΠ·ΠΎΠ²Π΅Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ `WebSocketDisconnect`, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΉΠΌΠ°ΡΡ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΊΠ°ΠΊ Π² ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅:
+
+{* ../../docs_src/websockets/tutorial003_py39.py hl[79:81] *}
+
+Π§ΡΠΎΠ±Ρ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΠΏΡΠΈΠΌΠ΅Ρ:
+
+* ΠΡΠΊΡΠΎΠΉΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
Π²ΠΊΠ»Π°Π΄ΠΊΠ°Ρ
Π±ΡΠ°ΡΠ·Π΅ΡΠ°.
+* ΠΡΠΏΡΠ°Π²ΡΡΠ΅ ΠΈΠ· Π½ΠΈΡ
ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ.
+* ΠΠ°ΡΠ΅ΠΌ Π·Π°ΠΊΡΠΎΠΉΡΠ΅ ΠΎΠ΄Π½Ρ ΠΈΠ· Π²ΠΊΠ»Π°Π΄ΠΎΠΊ.
+
+ΠΡΠΎ Π²ΡΠ·ΠΎΠ²Π΅Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ `WebSocketDisconnect`, ΠΈ Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΡ ΠΏΠΎΠ»ΡΡΠ°Ρ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅:
+
+```
+Client #1596980209979 left the chat
+```
+
+/// tip | ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅
+
+ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΡΠ΅ - ΡΡΠΎ Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ ΠΏΡΠΎΡΡΠΎΠΉ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΡΡΠΈΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ Π²Π΅Π±-ΡΠΎΠΊΠ΅Ρ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡΠΌ.
+
+ΠΠΎ ΠΈΠΌΠ΅ΠΉΡΠ΅ Π² Π²ΠΈΠ΄Ρ, ΡΡΠΎ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠΊΠ° ΠΎΠ½ Π°ΠΊΡΠΈΠ²Π΅Π½, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π²ΡΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ Π² ΠΏΡΠΎΡΡΠΎΠΌ ΡΠΏΠΈΡΠΊΠ΅ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ.
+
+ΠΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ ΡΡΠΎ-ΡΠΎ Π»Π΅Π³ΠΊΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΡΠ΅ΠΌΠΎΠ΅ Ρ FastAPI, Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠ΅ ΠΈ Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ Redis, PostgreSQL ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΎΠ³ΠΎ, ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ encode/broadcaster.
+
+///
+
+## ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ
+
+ΠΠ»Ρ Π±ΠΎΠ»Π΅Π΅ Π³Π»ΡΠ±ΠΎΠΊΠΎΠ³ΠΎ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΌΡ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΉ Starlette:
+
+* The `WebSocket` class.
+* Class-based WebSocket handling.
diff --git a/requirements-tests.txt b/requirements-tests.txt
index 91e7fb7aa..4a15844e4 100644
--- a/requirements-tests.txt
+++ b/requirements-tests.txt
@@ -10,7 +10,7 @@ anyio[trio] >=3.2.1,<5.0.0
PyJWT==2.8.0
pyyaml >=5.3.1,<7.0.0
passlib[bcrypt] >=1.7.2,<2.0.0
-inline-snapshot==0.18.1
+inline-snapshot==0.19.3
# types
types-ujson ==5.10.0.20240515
types-orjson ==3.6.2