image_build_pyramid.py
3.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
# coding=utf-8
#author: 4N
#createtime: 2021/7/19
#email: nheweijun@sina.com
import configure
from app.util.component.ApiTemplate import ApiTemplate
from app.util.component.StructurePrint import StructurePrint
from app.models import db
from app.modules.data.models import Task
import multiprocessing
import uuid
import datetime
import requests
from app.util.component.TaskController import TaskController
from app.util.component.TaskWriter import TaskWriter
class Api(ApiTemplate):
api_name = "创建影像金字塔"
def process(self):
# 返回结果
res = {}
try:
task_guid = uuid.uuid1().__str__()
pyramid_process = multiprocessing.Process(target=self.task, args=(task_guid,self.para))
pyramid_process.start()
task = Task(guid=task_guid,
name="影像金字塔|{}".format(self.para.get("alias")),
create_time=datetime.datetime.now(),
state=0,
task_type=5,
creator=self.para.get("creator"),
process="影像创建金字塔中",
parameter=self.para.get("url"))
db.session.add(task)
db.session.commit()
res["data"] = "创建影像金字塔任务已提交!"
res["result"] = True
except Exception as e:
raise Exception("数据库错误!")
return res
def task(self,task_guid,para):
task_writer = None
try:
#任务控制,等待执行
TaskController.wait(task_guid)
task_writer = TaskWriter(task_guid)
task_writer.update_task({"state":2,"update_time":datetime.datetime.now(),"process" : "创建中"})
task_writer.update_process("开始创建...")
url = "{}/API/Image/BuildPyramid".format(para.get("url"))
StructurePrint().print(url)
self.para["from"] = configure.deploy_ip_host
self.para["task_guid"] = task_guid
response:requests.Response = requests.post(url,data=self.para)
if response.status_code == 200:
if not response.json().get("result"):
raise Exception("由于{},提交任务失败!".format(response.json().get("msg")))
else:
task_writer.update_task({"task_pid": int(response.json().get("data"))})
else:
raise Exception("影像服务器连接失败!")
except Exception as e:
try:
task_writer.update_task({"state": -1,"update_time":datetime.datetime.now(),"process": "创建失败"})
task_writer.update_process( e.__str__())
task_writer.update_process("任务中止!")
except Exception as ee:
StructurePrint().print(ee.__str__())
raise e
finally:
try:
task_writer.close()
except Exception as e:
StructurePrint().print(e.__str__())
api_doc = {
"tags": ["影像服务接口"],
"parameters": [
{"name": "guid",
"in": "formData",
"type": "string",
"description": "guid"},
{"name": "url",
"in": "formData",
"type": "string",
"description": "url"},
{"name": "alias",
"in": "formData",
"type": "string",
"description": "影像alias"},
],
"responses": {
200: {
"schema": {
"properties": {
}
}
}
}
}