mirror of https://github.com/openspug/spug
				
				
				
			F 修复任务计划测试执行Python脚本报错的问题
							parent
							
								
									3330f5e0a9
								
							
						
					
					
						commit
						b6494811a0
					
				| 
						 | 
				
			
			@ -37,8 +37,7 @@ def host_executor(host, command):
 | 
			
		|||
    return code, round(time.time() - now, 3), out
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def schedule_worker_handler(job):
 | 
			
		||||
    history_id, host_id, interpreter, command = json.loads(job)
 | 
			
		||||
def dispatch_job(host_id, interpreter, command):
 | 
			
		||||
    if interpreter == 'python':
 | 
			
		||||
        attach = 'INTERPRETER=python\ncommand -v python3 &> /dev/null && INTERPRETER=python3'
 | 
			
		||||
        command = f'{attach}\n$INTERPRETER << EOF\n# -*- coding: UTF-8 -*-\n{command}\nEOF'
 | 
			
		||||
| 
						 | 
				
			
			@ -50,6 +49,12 @@ def schedule_worker_handler(job):
 | 
			
		|||
            code, duration, out = 1, 0, f'unknown host id for {host_id!r}'
 | 
			
		||||
        else:
 | 
			
		||||
            code, duration, out = host_executor(host, command)
 | 
			
		||||
    return code, duration, out
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def schedule_worker_handler(job):
 | 
			
		||||
    history_id, host_id, interpreter, command = json.loads(job)
 | 
			
		||||
    code, duration, out = dispatch_job(host_id, interpreter, command)
 | 
			
		||||
 | 
			
		||||
    close_old_connections()
 | 
			
		||||
    with transaction.atomic():
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7,7 +7,7 @@ from apscheduler.schedulers.background import BackgroundScheduler
 | 
			
		|||
from apscheduler.triggers.cron import CronTrigger
 | 
			
		||||
from apps.schedule.scheduler import Scheduler
 | 
			
		||||
from apps.schedule.models import Task, History
 | 
			
		||||
from apps.schedule.executors import local_executor, host_executor
 | 
			
		||||
from apps.schedule.executors import dispatch_job
 | 
			
		||||
from apps.host.models import Host
 | 
			
		||||
from django.conf import settings
 | 
			
		||||
from libs import json_response, JsonParser, Argument, human_datetime, auth
 | 
			
		||||
| 
						 | 
				
			
			@ -121,14 +121,7 @@ class HistoryView(View):
 | 
			
		|||
            return json_response(error='未找到指定任务')
 | 
			
		||||
        outputs, status = {}, 1
 | 
			
		||||
        for host_id in json.loads(task.targets):
 | 
			
		||||
            if host_id == 'local':
 | 
			
		||||
                code, duration, out = local_executor(task.command)
 | 
			
		||||
            else:
 | 
			
		||||
                host = Host.objects.filter(pk=host_id).first()
 | 
			
		||||
                if not host:
 | 
			
		||||
                    code, duration, out = 1, 0, f'unknown host id for {host_id!r}'
 | 
			
		||||
                else:
 | 
			
		||||
                    code, duration, out = host_executor(host, task.command)
 | 
			
		||||
            code, duration, out = dispatch_job(host_id, task.interpreter, task.command)
 | 
			
		||||
            if code != 0:
 | 
			
		||||
                status = 2
 | 
			
		||||
            outputs[host_id] = [code, duration, out]
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue