Files

58 lines
1.8 KiB
Python
Raw Permalink Normal View History

2024-05-29 10:21:31 +08:00
import json
import traceback
from nc_http.core import Response
2024-09-09 11:29:06 +08:00
from pydantic import BaseModel, Field
2024-05-29 10:21:31 +08:00
from api.blueprint import data
from commons.constants.material_task import MaterialTaskStatus
from commons.models.material_task import MaterialTask
from commons.services.data import DataService
from core.extensions import siwa
2024-09-09 11:29:06 +08:00
from tasks.once.calculate import calculate
from tasks.once.collect import collect
2024-05-29 10:21:31 +08:00
@data.route('/task/<int:task_id>/refresh', methods=['GET'])
2024-09-09 11:29:06 +08:00
@siwa.doc(tags=[""], summary='刷新采集任务')
2024-05-29 10:21:31 +08:00
def refresh_task(task_id):
with MaterialTask.atomic() as session:
data = MaterialTask.get_by_id(task_id, session)
if not data:
pass
data.status = MaterialTaskStatus.DOING
session.flush()
try:
content = DataService.get_content(type=data.type)
data.content = json.dumps(content, ensure_ascii=False)
data.status = MaterialTaskStatus.DONE
session.flush()
except Exception as e:
traceback.print_exc()
data.status = MaterialTaskStatus.FAILED
session.flush()
return Response()
2024-09-09 11:29:06 +08:00
class CalculateQuery(BaseModel):
2024-12-25 11:31:31 +08:00
year: int = Field(title='年份')
month: int = Field(title='月份')
2025-10-13 15:21:26 +08:00
only_avg: int = Field(title='是否只计算均值', default=0)
2024-09-09 11:29:06 +08:00
@data.route('/calculate', methods=['GET'])
@siwa.doc(tags=[""], summary='触发计算任务', query=CalculateQuery)
def start_calculate(query: CalculateQuery):
calculate(year=query.year, month=query.month)
2024-12-25 11:31:31 +08:00
return Response()
@data.route('/collect', methods=['GET'])
@siwa.doc(tags=[""], summary='触发计算任务', query=CalculateQuery)
def start_collect(query: CalculateQuery):
collect(year=query.year, month=query.month, only_avg=query.only_avg)
2024-09-09 11:29:06 +08:00
return Response()