* tasks 获取svg

This commit is contained in:
wb-msm261421 2022-03-23 17:32:38 +08:00 committed by 剑子仙机
parent ca06dea7f0
commit 3ae075feb0
2 changed files with 20 additions and 1 deletions

View File

@ -5,7 +5,7 @@
@Author : DM
@Software: PyCharm
"""
from django.urls import path, include
from django.urls import path, include, re_path
from rest_framework.routers import DefaultRouter
from apps.task import views
@ -16,4 +16,5 @@ router.register('tasks', views.TaskAPIView)
urlpatterns = [
path('api/v1/', include(router.urls)),
re_path('^api/v1/tasks/(?P<task_id>\d+)/(?P<etx>[a-zA-Z]+)/$', views.TaskAPIView.as_view({'get': 'get_task_svg'})),
]

View File

@ -2,7 +2,9 @@ import os
import ast
import subprocess
from django.http.response import FileResponse
from django_filters.rest_framework import DjangoFilterBackend
from django.shortcuts import get_object_or_404
from rest_framework.filters import SearchFilter, OrderingFilter
from rest_framework.viewsets import GenericViewSet
from rest_framework import mixins
@ -84,6 +86,22 @@ class TaskAPIView(GenericViewSet,
instance.deleted_by = self.request.user
instance.save()
def get_task_svg(self, request, task_id: str, etx: str, *args, **kwargs):
if etx != 'svg':
return not_found(message="请输入正确参数: SVG")
instance = get_object_or_404(JobModel, pk=task_id)
if instance.status == 'Success':
result = json.loads(instance.result)
svg_context = result.get('flamegraph', None)
if svg_context is None:
return success(success=False, message='Result 未包含 "flamegraph"字段')
return FileResponse(svg_context)
else:
return success(result={}, message=f"任务:{instance.status}", success=False)
def script_task(data):
try: