Upload 2 files
Browse files- main.py +29 -26
- requirements.txt +19 -0
main.py
CHANGED
|
@@ -1,29 +1,32 @@
|
|
| 1 |
-
import
|
| 2 |
-
import uvicorn
|
| 3 |
-
from fastapi import FastAPI
|
| 4 |
-
from pydantic import BaseModel
|
| 5 |
-
import os
|
| 6 |
-
|
| 7 |
-
logging.basicConfig(
|
| 8 |
-
format='%(asctime)s.%(msecs)03d %(levelname)-8s %(message)s',
|
| 9 |
-
level=logging.DEBUG,
|
| 10 |
-
datefmt='%Y-%m-%d %H:%M:%S'
|
| 11 |
-
)
|
| 12 |
-
|
| 13 |
|
| 14 |
app = FastAPI()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 15 |
|
| 16 |
-
requests = []
|
| 17 |
-
|
| 18 |
-
@app.post("/sign", tags=["Classificator"])
|
| 19 |
-
async def sign(data: str):
|
| 20 |
-
requests.append(data)
|
| 21 |
-
return result
|
| 22 |
-
|
| 23 |
-
@app.get("/ping", tags=["TEST"])
|
| 24 |
-
async def ping():
|
| 25 |
-
return "pong"
|
| 26 |
-
|
| 27 |
-
|
| 28 |
-
if __name__ == "__main__":
|
| 29 |
-
uvicorn.run(app, host="127.0.0.1", port=8000)
|
|
|
|
| 1 |
+
from fastapi import FastAPI, WebSocket
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
|
| 3 |
app = FastAPI()
|
| 4 |
+
worker_ws = None
|
| 5 |
+
client_ws = None
|
| 6 |
+
|
| 7 |
+
|
| 8 |
+
@app.websocket("/ws")
|
| 9 |
+
async def websocket_endpoint(websocket: WebSocket):
|
| 10 |
+
global client_ws
|
| 11 |
+
await websocket.accept()
|
| 12 |
+
client_ws = websocket
|
| 13 |
+
while True:
|
| 14 |
+
data = await websocket.receive_text()
|
| 15 |
+
if type(worker_ws) is WebSocket:
|
| 16 |
+
await worker_ws.send_json(data)
|
| 17 |
+
else:
|
| 18 |
+
await websocket.send_text(f"Worker is sleeping now!")
|
| 19 |
+
|
| 20 |
+
|
| 21 |
+
@app.websocket("/worker/ws")
|
| 22 |
+
async def websocket_endpoint(websocket: WebSocket):
|
| 23 |
+
global worker_ws
|
| 24 |
+
await websocket.accept()
|
| 25 |
+
worker_ws = websocket
|
| 26 |
+
while True:
|
| 27 |
+
data = await websocket.receive_json()
|
| 28 |
+
if type(client_ws) is WebSocket:
|
| 29 |
+
await client_ws.send_json(data)
|
| 30 |
+
else:
|
| 31 |
+
await websocket.send_text(f"Client is sleeping now!")
|
| 32 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
requirements.txt
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
annotated-types==0.6.0
|
| 2 |
+
anyio==4.3.0
|
| 3 |
+
click==8.1.7
|
| 4 |
+
exceptiongroup==1.2.0
|
| 5 |
+
fastapi==0.110.0
|
| 6 |
+
h11==0.14.0
|
| 7 |
+
httptools==0.6.1
|
| 8 |
+
idna==3.6
|
| 9 |
+
pydantic==2.6.4
|
| 10 |
+
pydantic_core==2.16.3
|
| 11 |
+
python-dotenv==1.0.1
|
| 12 |
+
PyYAML==6.0.1
|
| 13 |
+
sniffio==1.3.1
|
| 14 |
+
starlette==0.36.3
|
| 15 |
+
typing_extensions==4.10.0
|
| 16 |
+
uvicorn==0.29.0
|
| 17 |
+
uvloop==0.19.0
|
| 18 |
+
watchfiles==0.21.0
|
| 19 |
+
websockets==12.0
|