feat: new stuff

This commit is contained in:
2024-11-05 04:40:42 +03:00
parent d497bb0465
commit eeac97861c
10 changed files with 138 additions and 78 deletions

45
main.py
View File

@@ -1,3 +1,4 @@
from contextlib import asynccontextmanager
from typing import Annotated
from celery.result import AsyncResult
@@ -7,10 +8,9 @@ from starlette import status
from starlette.responses import JSONResponse
import backend.config
from background import taskiq_broker
from schemas.general import *
import background.tasks
from background.tasks import *
from schemas.general import UpdateRequest, UpdateResponse, UpdateMarketplaceRequest, UpdateMarketplacesRequest, \
UpdateMarketplaceProductsRequest
auth_schema = HTTPBearer()
@@ -20,10 +20,32 @@ async def check_auth(token: Annotated[HTTPAuthorizationCredentials, Depends(auth
raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail='Invalid credentials')
async def start_broker():
if not taskiq_broker.is_worker_process:
await taskiq_broker.startup()
print('Broker started')
return
async def shutdown_broker():
if not taskiq_broker.is_worker_process:
await taskiq_broker.shutdown()
print('Broker shutdown')
return
@asynccontextmanager
async def lifespan(app: FastAPI):
await start_broker()
yield
await shutdown_broker()
app = FastAPI(
dependencies=[
Depends(check_auth)
]
],
lifespan=lifespan
)
@@ -41,7 +63,7 @@ async def ping():
async def update(
request: UpdateRequest
):
task = background.tasks.process_update.delay(request.product_ids)
task = background.tasks.process_update.kiq(request.product_ids)
return UpdateResponse(task_id=task.id)
@@ -49,25 +71,24 @@ async def update(
async def update_marketplace(
request: UpdateMarketplaceRequest
):
task = background.tasks.update_marketplace.delay(request.marketplace_id)
return UpdateResponse(task_id=task.id)
task = await background.tasks.update_marketplace.kiq(request.marketplace_id)
return UpdateResponse(task_id=task.task_id)
@app.post('/update/marketplace/products')
async def update_marketplace_products(
request: UpdateMarketplaceProductsRequest
):
task = background.tasks.update_marketplace_products.delay(request.marketplace_id, request.product_ids)
return UpdateResponse(task_id=task.id)
task = await background.tasks.update_marketplace_products.kiq(request.marketplace_id, request.product_ids)
return UpdateResponse(task_id=task.task_id)
@app.post('/update/marketplaces')
async def update_marketplace(
request: UpdateMarketplacesRequest
):
task = background.tasks.update_marketplaces.delay(request.marketplace_ids)
return UpdateResponse(task_id=task.id)
task =await background.tasks.update_marketplaces.kiq(request.marketplace_ids)
return UpdateResponse(task_id=task.task_id)
@app.get("/tasks/{task_id}")
def get_status(task_id):