main.py 3.2 KB

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