【新增】GLUE模式(Python) 扩展,可选 "GLUE(Python3)" 或 "GLUE(Python2)" 两种模式,分别支持 python3/2 多版本;

3.2.0-release
xuxueli 4 weeks ago
parent 09e4ba3db7
commit 8eff07d7ab

@ -2554,6 +2554,7 @@ public void execute() {
- 8、【修复】合并PR-3506修复小概率情况下任务重复调度问题 - 8、【修复】合并PR-3506修复小概率情况下任务重复调度问题
- 9、【修复】合并PR-3747修复异常情况下资源泄漏风险 - 9、【修复】合并PR-3747修复异常情况下资源泄漏风险
- 10、【优化】调度中心系统日志调整支持启动时指定 -DLOG_HOME 参数自定义日志位置;同时优化日志格式提升易读性; - 10、【优化】调度中心系统日志调整支持启动时指定 -DLOG_HOME 参数自定义日志位置;同时优化日志格式提升易读性;
- 11、【新增】GLUE模式(Python) 扩展,可选 "GLUE(Python3)" 或 "GLUE(Python2)" 两种模式,分别支持 python3/2 多版本;
- 3、【规划中】登录安全升级密码加密处理算法从Md5改为Sha256 - 3、【规划中】登录安全升级密码加密处理算法从Md5改为Sha256
``` ```

@ -519,6 +519,8 @@ $(function() {
$("#addModal .form textarea[name='glueSource']").val( $("#addModal .form .glueSource_shell").val() ); $("#addModal .form textarea[name='glueSource']").val( $("#addModal .form .glueSource_shell").val() );
} else if ('GLUE_PYTHON'==glueType){ } else if ('GLUE_PYTHON'==glueType){
$("#addModal .form textarea[name='glueSource']").val( $("#addModal .form .glueSource_python").val() ); $("#addModal .form textarea[name='glueSource']").val( $("#addModal .form .glueSource_python").val() );
} else if ('GLUE_PYTHON2'==glueType){
$("#addModal .form textarea[name='glueSource']").val( $("#addModal .form .glueSource_python2").val() );
} else if ('GLUE_PHP'==glueType){ } else if ('GLUE_PHP'==glueType){
$("#addModal .form textarea[name='glueSource']").val( $("#addModal .form .glueSource_php").val() ); $("#addModal .form textarea[name='glueSource']").val( $("#addModal .form .glueSource_php").val() );
} else if ('GLUE_NODEJS'==glueType){ } else if ('GLUE_NODEJS'==glueType){

@ -133,6 +133,9 @@
<#elseif jobInfo.glueType == "GLUE_PYTHON" > <#elseif jobInfo.glueType == "GLUE_PYTHON" >
<#assign glueTypeModeSrc = "${request.contextPath}/static/plugins/codemirror/mode/python/python.js" /> <#assign glueTypeModeSrc = "${request.contextPath}/static/plugins/codemirror/mode/python/python.js" />
<#assign glueTypeIdeMode = "text/x-python" /> <#assign glueTypeIdeMode = "text/x-python" />
<#elseif jobInfo.glueType == "GLUE_PYTHON2" >
<#assign glueTypeModeSrc = "${request.contextPath}/static/plugins/codemirror/mode/python/python.js" />
<#assign glueTypeIdeMode = "text/x-python" />
<#elseif jobInfo.glueType == "GLUE_PHP" > <#elseif jobInfo.glueType == "GLUE_PHP" >
<#assign glueTypeModeSrc = "${request.contextPath}/static/plugins/codemirror/mode/php/php.js" /> <#assign glueTypeModeSrc = "${request.contextPath}/static/plugins/codemirror/mode/php/php.js" />
<#assign glueTypeIdeMode = "text/x-php" /> <#assign glueTypeIdeMode = "text/x-php" />

@ -281,6 +281,22 @@ exit 0
import time import time
import sys import sys
print("xxl-job: hello python")
print("${I18n.jobinfo_script_location}", sys.argv[0])
print("${I18n.jobinfo_field_executorparam}", sys.argv[1])
print("${I18n.jobinfo_shard_index}", sys.argv[2])
print("${I18n.jobinfo_shard_total}", sys.argv[3])
print("Good bye!")
exit(0)
</textarea>
<textarea class="glueSource_python2" style="display:none;" >
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import time
import sys
print "xxl-job: hello python" print "xxl-job: hello python"
print "${I18n.jobinfo_script_location}", sys.argv[0] print "${I18n.jobinfo_script_location}", sys.argv[0]
@ -299,7 +315,6 @@ logging.basicConfig(level=logging.DEBUG)
logging.info("脚本文件:" + sys.argv[0]) logging.info("脚本文件:" + sys.argv[0])
--> -->
</textarea> </textarea>
<#-- php GLUE php -->
<textarea class="glueSource_php" style="display:none;" > <textarea class="glueSource_php" style="display:none;" >
<?php <?php

@ -8,10 +8,11 @@ public enum GlueTypeEnum {
BEAN("BEAN", false, null, null), BEAN("BEAN", false, null, null),
GLUE_GROOVY("GLUE(Java)", false, null, null), GLUE_GROOVY("GLUE(Java)", false, null, null),
GLUE_SHELL("GLUE(Shell)", true, "bash", ".sh"), GLUE_SHELL("GLUE(Shell)", true, "bash", ".sh"),
GLUE_PYTHON("GLUE(Python)", true, "python", ".py"), GLUE_PYTHON("GLUE(Python3)", true, "python3", ".py"),
GLUE_PHP("GLUE(PHP)", true, "php", ".php"), GLUE_PYTHON2("GLUE(Python2)", true, "python", ".py"),
GLUE_NODEJS("GLUE(Nodejs)", true, "node", ".js"), GLUE_NODEJS("GLUE(Nodejs)", true, "node", ".js"),
GLUE_POWERSHELL("GLUE(PowerShell)", true, "powershell", ".ps1"); GLUE_POWERSHELL("GLUE(PowerShell)", true, "powershell", ".ps1"),
GLUE_PHP("GLUE(PHP)", true, "php", ".php");
private String desc; private String desc;
private boolean isScript; private boolean isScript;

@ -2,28 +2,26 @@
<configuration debug="false" scan="true" scanPeriod="1 seconds"> <configuration debug="false" scan="true" scanPeriod="1 seconds">
<contextName>logback</contextName> <contextName>logback</contextName>
<property name="log.path" value="/data/applogs/xxl-job/xxl-job-executor-sample-springboot-ai.log"/> <property name="log.path" value="${LOG_HOME:-/data/applogs}/xxl-job/xxl-job-executor-sample-springboot-ai.log" />
<appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder> <encoder>
<pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder> </encoder>
</appender> </appender>
<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender"> <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}</file> <file>${log.path}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.path}.%d{yyyy-MM-dd}.zip</fileNamePattern> <fileNamePattern>${log.path}.%d{yyyy-MM-dd}.log</fileNamePattern>
</rollingPolicy> </rollingPolicy>
<encoder> <encoder>
<pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</pattern>
</encoder> </encoder>
</appender> </appender>
<root level="info"> <root level="info">
<appender-ref ref="console"/> <appender-ref ref="console"/>
<appender-ref ref="file"/> <!--<appender-ref ref="file"/>-->
</root> </root>
</configuration> </configuration>

@ -2,28 +2,26 @@
<configuration debug="false" scan="true" scanPeriod="1 seconds"> <configuration debug="false" scan="true" scanPeriod="1 seconds">
<contextName>logback</contextName> <contextName>logback</contextName>
<property name="log.path" value="/data/applogs/xxl-job/xxl-job-executor-sample-springboot.log"/> <property name="log.path" value="${LOG_HOME:-/data/applogs}/xxl-job/xxl-job-executor-sample-springboot.log" />
<appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder> <encoder>
<pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder> </encoder>
</appender> </appender>
<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender"> <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}</file> <file>${log.path}</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.path}.%d{yyyy-MM-dd}.zip</fileNamePattern> <fileNamePattern>${log.path}.%d{yyyy-MM-dd}.log</fileNamePattern>
</rollingPolicy> </rollingPolicy>
<encoder> <encoder>
<pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</pattern>
</encoder> </encoder>
</appender> </appender>
<root level="info"> <root level="info">
<appender-ref ref="console"/> <appender-ref ref="console"/>
<appender-ref ref="file"/> <!--<appender-ref ref="file"/>-->
</root> </root>
</configuration> </configuration>
Loading…
Cancel
Save