123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- from typing import Optional
- from fastapi import FastAPI
- from concurrent.futures import ThreadPoolExecutor
- from sqlalchemy.sql.elements import Null
- from sqlalchemy.sql.expression import null
- from datetime import date
- import requests
- import uuid
- import os
- import uvicorn
- from asr_client import send_asr_request, send_task_request
- from database import insert, update, query, Task
- from datetime import datetime
- from fastapi.middleware.cors import CORSMiddleware
- import hashlib
- import traceback
- import json
- threadPool = ThreadPoolExecutor(max_workers=4)
- app = FastAPI()
- origins = [
- "http://192.168.1.34",
- "http://192.168.1.34:8000",
- "http://192.168.1.105",
- "http://192.168.1.105:3000",
- "http://111.206.86.186",
- "http://111.206.86.186:3000",
- "http://adsp.tjyourong.com.cn",
- "http://adsp.tjyourong.com.cn:3000",
- "http://adsp.c-top.com.cn",
- "http://adsp.c-top.com.cn:3000"
- ]
- app.add_middleware(
- CORSMiddleware,
- allow_origins=origins,
- allow_credentials=True,
- allow_methods=["*"],
- allow_headers=["*"],
- )
- class QueryItem():
- md5: Optional[str] = None
- url: Optional[str] = None
- @app.get('/')
- def index():
- return {'message': '你已经正确创建 FastApi 服务!'}
- @app.post('/asr/task/submit')
- def task_submit(md5: str, url: str):
- json = send_asr_request(url)
- task = Task(md5=md5, task_id=json.Data.TaskId, task_result=json.to_json_string(), task_status=1)
- insert(task)
- return {'code': 0, 'taskId': json.Data.TaskId}
- @app.post('/asr/task/result')
- def task_submit(task_id: int):
- json = send_task_request(task_id)
- task = query(None, None, task_id)[0]
- task.task_status = json.Data.Status
- task.task_result = json.to_json_string()
- try:
- if json.Data.Status == 2:
- task.word_text = json.Data.ResultDetail[0].FinalSentence
- task.word_split = json.Data.ResultDetail[0].SliceSentence
- except:
- # 提取原始文本内容和分词内容发生异常,把 task_status 置为 -1
- task.task_status = -1
- update(task)
- return {'code': 0, 'status': json.Data.StatusStr}
- @app.post('/asr/task/list')
- def task_submit(task_status: int):
- task = query(None, task_status, None)
- return {'code': 0, 'data': task}
- # @app.post('/asr/task/result')
- # def retry(item:Item):
- # #插入数据库
- # task = query(item.taskId,None,None,None)[0]
- # item.inputVideoUrl = task.input_video_url
- # item.inputImageUrl = task.input_image_url
- # threadPool.submit(videoSwap,item).add_done_callback(swapFinish)
- # return {'code':0,'data':{'taskId': task.id}}
- # @app.post('/jeecg-boot/task/single')
- # def single(item:Item):
- # #插入数据库
- # old_task = query(None,item.videoMd5,item.imageMd5,None)
- # if len(old_task) > 0:
- # return {'code':-1,'data':old_task}
- # uid = str(uuid.uuid4())
- # suid = ''.join(uid.split('-'))
- # video_input = item.inputVideoUrl
- # image_input = item.inputImageUrl
- # 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)
- # task = insert(task)
- # item.taskId = task.id
- # threadPool.submit(videoSwap,item).add_done_callback(swapFinish)
- # return {'code':0,'data':{'taskId': task.id}}
- if __name__ == '__main__':
- uvicorn.run(app='main:app', host="0.0.0.0", port=31013, reload=True, debug=True)
- # gunicorn main:app -w 4 -k uvicorn.workers.UvicornWorker #线上启动命令
|