feat: 任务派发测试

This commit is contained in:
caoqianming 2023-09-01 09:08:49 +08:00
parent 64c2d86cd7
commit 35d001e4e5
2 changed files with 12 additions and 9 deletions

View File

@ -12,8 +12,10 @@ class GenerateVoiceSerializer(serializers.Serializer):
class TestTaskSerializer(serializers.Serializer): class TestTaskSerializer(serializers.Serializer):
func = serializers.CharField(label='函数名称')
args = serializers.ListField(child=serializers.CharField(), label='列表参数', required=False, allow_null=True) args = serializers.ListField(child=serializers.CharField(), label='列表参数', required=False, allow_null=True)
kwargs = serializers.JSONField(label="字典参数", required=False, allow_null=True) kwargs = serializers.JSONField(label="字典参数", required=False, allow_null=True)
delay = serializers.BooleanField(label="是否延迟执行", default=False)
class CleanDataSerializer(serializers.Serializer): class CleanDataSerializer(serializers.Serializer):

View File

@ -22,6 +22,7 @@ from apps.third.models import TDevice
from apps.utils.sms import send_sms from apps.utils.sms import send_sms
from apps.utils.speech import generate_voice from apps.utils.speech import generate_voice
from apps.utils.tools import get_info_from_id from apps.utils.tools import get_info_from_id
import importlib
from apps.utils.viewsets import CustomGenericViewSet from apps.utils.viewsets import CustomGenericViewSet
from apps.utils.wx import wxClient from apps.utils.wx import wxClient
@ -256,15 +257,15 @@ class TestViewSet(CustomGenericViewSet):
serializer = TestTaskSerializer(data=request.data) serializer = TestTaskSerializer(data=request.data)
serializer.is_valid(raise_exception=True) serializer.is_valid(raise_exception=True)
vdata = serializer.validated_data vdata = serializer.validated_data
ret = {} module, func = vdata['func'].rsplit(".", 1)
# task = show.delay(*vdata.get('args', []), **vdata.get('kwargs', {})) m = importlib.import_module(module)
ret['task_id'] = task.task_id f = getattr(m, func)
# from celery.app.control import Control if vdata['delay']:
# from server.celery import app task = f.delay(*vdata.get('args', []), **vdata.get('kwargs', {})) # 同步执行
# celery_control = Control(app=app) return Response({'task_id': task.id})
# # 关闭作业监控任务 else:
# res = celery_control.revoke(task.task_id, terminate=True) f(*vdata.get('args', []), **vdata.get('kwargs', {}))
return Response(ret) return Response()
@action(methods=['post'], detail=False, serializer_class=Serializer) @action(methods=['post'], detail=False, serializer_class=Serializer)
def remind_event(self, request, pk=None): def remind_event(self, request, pk=None):