api.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. # -*- coding: utf-8 -*-
  2. # @Author: privacy
  3. # @Date: 2024-09-03 11:24:56
  4. # @Last Modified by: privacy
  5. # @Last Modified time: 2024-09-04 11:07:49
  6. from fastapi import FastAPI
  7. from pydantic import BaseModel
  8. from celery.result import AsyncResult
  9. from celery_tasks import celery_app
  10. # from celery_tasks.commonprocess import add
  11. from celery_tasks.commonprocess import bidding_factor, test_all_files
  12. from celery_tasks.project_loc import extract_project
  13. tags_metadata = [
  14. {
  15. "name": "file",
  16. "description": "解析PDF文件"
  17. },
  18. {
  19. "name": "factor",
  20. "description": "解析详审因素"
  21. },
  22. {
  23. "name": "result",
  24. "description": "获取异步任务结果"
  25. }
  26. ]
  27. app = FastAPI(openapi_tags=tags_metadata)
  28. class RequestModel(BaseModel):
  29. table_list: list
  30. @app.post('/')
  31. def root(request: RequestModel):
  32. # task = add.delay(12, 12)
  33. task = extract_project.apply_async(kwargs={'table_list': request.table_list})
  34. return {"message": f"Task {task.id} Start!"}
  35. @app.post('/factor', tags=['factor'])
  36. def get_factor(request: RequestModel):
  37. task = bidding_factor.apply_async(kwargs={'table_list': request.table_list})
  38. return {"message": f"Task {task.id} Start!"}
  39. @app.get('/result', tags=['result'])
  40. def back(taskid):
  41. result = AsyncResult(id=taskid, app=celery_app)
  42. if result.successful():
  43. val = result.get()
  44. return "执行完成,结果:%s" % val
  45. else:
  46. return '正在处理中...'
  47. @app.get('/file', tags=['file'])
  48. def process_file(proj_name: str):
  49. task = test_all_files.apply_async(kwargs={'proj_name': proj_name})
  50. return {"message": f"Task {task.id} Start!"}