main.py 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  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. try:
  58. if json.Data.Status == 2:
  59. task.word_text = json.Data.ResultDetail[0].FinalSentence
  60. task.word_split = json.Data.ResultDetail[0].SliceSentence
  61. except:
  62. # 提取原始文本内容和分词内容发生异常,把 task_status 置为 -1
  63. task.task_status = -1
  64. update(task)
  65. return {'code': 0, 'status': json.Data.StatusStr}
  66. @app.post('/asr/task/list')
  67. def task_submit(task_status: int):
  68. task = query(None, task_status, None)
  69. return {'code': 0, 'data': task}
  70. # @app.post('/asr/task/result')
  71. # def retry(item:Item):
  72. # #插入数据库
  73. # task = query(item.taskId,None,None,None)[0]
  74. # item.inputVideoUrl = task.input_video_url
  75. # item.inputImageUrl = task.input_image_url
  76. # threadPool.submit(videoSwap,item).add_done_callback(swapFinish)
  77. # return {'code':0,'data':{'taskId': task.id}}
  78. # @app.post('/jeecg-boot/task/single')
  79. # def single(item:Item):
  80. # #插入数据库
  81. # old_task = query(None,item.videoMd5,item.imageMd5,None)
  82. # if len(old_task) > 0:
  83. # return {'code':-1,'data':old_task}
  84. # uid = str(uuid.uuid4())
  85. # suid = ''.join(uid.split('-'))
  86. # video_input = item.inputVideoUrl
  87. # image_input = item.inputImageUrl
  88. # 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)
  89. # task = insert(task)
  90. # item.taskId = task.id
  91. # threadPool.submit(videoSwap,item).add_done_callback(swapFinish)
  92. # return {'code':0,'data':{'taskId': task.id}}
  93. if __name__ == '__main__':
  94. uvicorn.run(app='main:app', host="0.0.0.0", port=31012, reload=True, debug=True)
  95. # gunicorn main:app -w 4 -k uvicorn.workers.UvicornWorker #线上启动命令