main.py 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. from concurrent.futures import ThreadPoolExecutor
  2. from typing import Optional
  3. import uvicorn
  4. from fastapi import FastAPI
  5. from fastapi.middleware.cors import CORSMiddleware
  6. from asr_client import send_asr_request, send_task_request
  7. from database import insert, update, query, Task
  8. threadPool = ThreadPoolExecutor(max_workers=4)
  9. app = FastAPI()
  10. origins = [
  11. "http://192.168.1.34",
  12. "http://192.168.1.34:8000",
  13. "http://192.168.1.105",
  14. "http://192.168.1.105:3000",
  15. "http://111.206.86.186",
  16. "http://111.206.86.186:3000",
  17. "http://adsp.tjyourong.com.cn",
  18. "http://adsp.tjyourong.com.cn:3000",
  19. "http://adsp.c-top.com.cn",
  20. "http://adsp.c-top.com.cn:3000"
  21. ]
  22. app.add_middleware(
  23. CORSMiddleware,
  24. allow_origins=origins,
  25. allow_credentials=True,
  26. allow_methods=["*"],
  27. allow_headers=["*"],
  28. )
  29. class QueryItem():
  30. md5: Optional[str] = None
  31. url: Optional[str] = None
  32. @app.get('/')
  33. def index():
  34. return {'message': '你已经正确创建 FastApi 服务!'}
  35. @app.post('/asr/task/submit')
  36. def task_submit(md5: str, url: str):
  37. json = send_asr_request(url)
  38. task = Task(md5=md5, task_id=json.Data.TaskId, task_result=json.to_json_string(), task_status=1)
  39. insert(task)
  40. return {'code': 0, 'taskId': json.Data.TaskId}
  41. @app.post('/asr/task/result')
  42. def task_submit(task_id: int):
  43. json = send_task_request(task_id)
  44. task = query(None, None, task_id)[0]
  45. task.task_status = json.Data.Status
  46. task.task_result = json.to_json_string()
  47. try:
  48. if json.Data.Status == 2:
  49. task.word_text = json.Data.ResultDetail[0].FinalSentence
  50. task.word_split = json.Data.ResultDetail[0].SliceSentence
  51. except:
  52. # 提取原始文本内容和分词内容发生异常,把 task_status 置为 -1
  53. task.task_status = -1
  54. update(task)
  55. return {'code': 0, 'status': json.Data.StatusStr}
  56. @app.post('/asr/task/list')
  57. def task_submit(task_status: int):
  58. task = query(None, task_status, None)
  59. return {'code': 0, 'data': task}
  60. # @app.post('/asr/task/result')
  61. # def retry(item:Item):
  62. # #插入数据库
  63. # task = query(item.taskId,None,None,None)[0]
  64. # item.inputVideoUrl = task.input_video_url
  65. # item.inputImageUrl = task.input_image_url
  66. # threadPool.submit(videoSwap,item).add_done_callback(swapFinish)
  67. # return {'code':0,'data':{'taskId': task.id}}
  68. # @app.post('/jeecg-boot/task/single')
  69. # def single(item:Item):
  70. # #插入数据库
  71. # old_task = query(None,item.videoMd5,item.imageMd5,None)
  72. # if len(old_task) > 0:
  73. # return {'code':-1,'data':old_task}
  74. # uid = str(uuid.uuid4())
  75. # suid = ''.join(uid.split('-'))
  76. # video_input = item.inputVideoUrl
  77. # image_input = item.inputImageUrl
  78. # task = Task(input_video_url = video_input,input_image_url=image_input,status='waiting',input_video_md5=item.videoMd5,input_image_md5=item.imageMd5,create_by=item.createBy)
  79. # task = insert(task)
  80. # item.taskId = task.id
  81. # threadPool.submit(videoSwap,item).add_done_callback(swapFinish)
  82. # return {'code':0,'data':{'taskId': task.id}}
  83. if __name__ == '__main__':
  84. uvicorn.run(app='main:app', host="0.0.0.0", port=31013, reload=True, debug=True)
  85. # gunicorn main:app -w 4 -k uvicorn.workers.UvicornWorker #线上启动命令