You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

44 lines
2.0KB

  1. # -*-coding:utf-8 -*-
  2. from multiprocessing import Queue
  3. from fastapi import APIRouter, Depends
  4. from loguru import logger
  5. from bean.Result import JsonResult
  6. from bean.Stream import PushStreamRequest, CallbackRequest
  7. from common.Constant import get_share_queue, get_task_record
  8. from enums.HttpExceptionEnum import StreamExceptionType
  9. from exception.CustomerException import ServiceException
  10. from util.QueUtil import put_queue
  11. router = APIRouter()
  12. @router.post("/start", tags=['推流启动接口'], response_model=JsonResult)
  13. async def startPushStream(req: PushStreamRequest, msg_queue: Queue = Depends(get_share_queue),
  14. task_record: dict = Depends(get_task_record)):
  15. logger.info("接收到推流启动接口调用, 请求体: {}", req.json())
  16. if task_record["stream"] is not None:
  17. raise ServiceException(code=StreamExceptionType.TASK_IS_EXECUTING.value[0],
  18. msg=StreamExceptionType.TASK_IS_EXECUTING.value[1])
  19. put_queue(msg_queue, ("stream", {"command": "start", "pull_url": req.pullUrl, "push_url": req.pushUrl,
  20. "callback_url": req.callbackUrl}), timeout=2,
  21. is_throw_ex=True)
  22. return JsonResult.success()
  23. @router.put("/stop", tags=['推流停止接口'], response_model=JsonResult)
  24. async def stopPushStream(msg_queue: Queue = Depends(get_share_queue),
  25. task_record: dict = Depends(get_task_record)):
  26. logger.info("接收到推流停止接口调用")
  27. if task_record["stream"] is None:
  28. raise ServiceException(code=StreamExceptionType.TASK_NOT_EXISTS.value[0],
  29. msg=StreamExceptionType.TASK_NOT_EXISTS.value[1])
  30. put_queue(msg_queue, ("stream", {"command": "stop"}), timeout=2, is_throw_ex=True)
  31. return JsonResult.success()
  32. @router.post("/callback", tags=['自验证回调接口'], response_model=JsonResult)
  33. async def stopPushStream(req: CallbackRequest):
  34. print("接受回调请求, 请求体: ", req.json())
  35. return JsonResult.success()