| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- import uuid, json
- from service.video_analyzer import BaseVideoAnalyzer
- # from service.video.Video3DAnalyzer import Video3DAnalyzer
- from db import db
- from flask import request
- from db.task import Task
- from worker.thread_pool import pool
- from route.util import make_response
- from flask import Blueprint
- from service.StandingPhotoAnalyzer import StandingPhotoAnalyzer
- import logging
- logging.basicConfig(format='%(asctime)s - %(name)s[line:%(lineno)d] - %(levelname)s: %(message)s',
- level=logging.DEBUG)
- bp = Blueprint("analyze", __name__, url_prefix='/')
- def callback_generator(task_uuid):
- def callback(status, **kwargs):
- try:
- from app import app
- with app.app_context():
- task = Task.query.get(task_uuid)
- task.status = status
- if status == 'FINISHED':
- task.result = json.dumps(kwargs['result'])
- if status == 'ERROR':
- logging.error("error analyzing: ", exc_info=kwargs['error'])
-
- db.session.commit()
- logging.debug("calling to" + status)
- except Exception as e:
- logging.debug("nmsl", exc_info=e)
- return callback
- @bp.route("photos/analysis", methods=['POST'])
- def photo_analysis():
- req = request.get_json()
-
- ana = StandingPhotoAnalyzer(req['front'], req['right'], req['height'])
- task_uuid = str(uuid.uuid4())
- new_task = Task(task_uuid, 'PHOTO_STANDINGPOSE')
- db.session.add(new_task)
- db.session.commit()
- # ana.analyze(callback_generator(task_uuid))
- pool.submit(ana.analyze, callback_generator(task_uuid))
- return make_response(201, "success", {'task_uuid' : task_uuid})
- @bp.route("videos/analysis", methods=['POST'])
- def video_analysis():
- req = request.get_json()
-
- # ana_3d = Video3DAnalyzer()
- ana = BaseVideoAnalyzer(video_uuid=req['video_uuid'])
- task_uuid = str(uuid.uuid4())
- new_task = Task(task_uuid, "VIDEO_CRUNCH")
- db.session.add(new_task)
- db.session.commit()
- pool.submit(ana.analyze, callback_generator(task_uuid))
- return make_response(201, "success", {'task_uuid' : task_uuid})
|