xxjob 定时任务 执行时,能否制定Python 版本,目前python2 已经不更新了。 在文件头部制定版本不生效
#!/home/xxx/anaconda3/bin/python3
# -*- coding: UTF-8 -*-
查的资料 如果使用第二种方法可以正确执行
xxjob 定时任务 执行时,能否制定Python 版本,目前python2 已经不更新了。 在文件头部制定版本不生效
#!/home/xxx/anaconda3/bin/python3
# -*- coding: UTF-8 -*-
查的资料 如果使用第二种方法可以正确执行
个人感觉第二种方法是没有必要的
个人感觉第二种方法是没有必要的
第一种方式无法指定 Python 版本,或者 能从配置里指定 Python 路径,如果没有找到再用默认的路径
个人感觉第二种方法是没有必要的
第一种方式无法指定 Python 版本,或者 能从配置里指定 Python 路径,如果没有找到再用默认的路径
第一种是可以指定的啊。 /usr/bin/python script.py /usr/bin/python3.5 script.py /usr/bin/python3.7 script.py
个人感觉第二种方法是没有必要的
第一种方式无法指定 Python 版本,或者 能从配置里指定 Python 路径,如果没有找到再用默认的路径
第一种是可以指定的啊。 /usr/bin/python script.py /usr/bin/python3.5 script.py /usr/bin/python3.7 script.py
在 脚本指定不生效
xxljob默认通过PATH
中python命令执行python任务脚本,linux中python命令默认是python2,你也可以将其指向到你想要的python3。但我们觉得这种办法需要修改系统PATH配置有点不妥,于是我们修改了executor中ScriptJobHandler
的一段代码,使其可以从环境变量中读取相应配置,以此作为python解释器。大致如下:
$GLUE_PYTHON_EXEC <script.py>
xxljob默认通过
PATH
中python命令执行python任务脚本,linux中python命令默认是python2,你也可以将其指向到你想要的python3。但我们觉得这种办法需要修改系统PATH配置有点不妥,于是我们修改了executor中ScriptJobHandler
的一段代码,使其可以从环境变量中读取相应配置,以此作为python解释器。大致如下:$GLUE_PYTHON_EXEC <script.py>
想问下 具体改哪个位置
想问下 具体改哪个位置
@xujingbin 大致如下:
diff --git a/xxl-job-core/src/main/java/com/xxl/job/core/glue/GlueTypeEnum.java b/xxl-job-core/src/main/java/com/xxl/job/core/glue/GlueTypeEnum.java
index 55100be9..f29273c8 100644
--- a/xxl-job-core/src/main/java/com/xxl/job/core/glue/GlueTypeEnum.java
+++ b/xxl-job-core/src/main/java/com/xxl/job/core/glue/GlueTypeEnum.java
@@ -15,13 +15,13 @@ public enum GlueTypeEnum {
private String desc;
private boolean isScript;
- private String cmd;
+ private String defaultCmd;
private String suffix;
- private GlueTypeEnum(String desc, boolean isScript, String cmd, String suffix) {
+ private GlueTypeEnum(String desc, boolean isScript, String defaultCmd, String suffix) {
this.desc = desc;
this.isScript = isScript;
- this.cmd = cmd;
+ this.defaultCmd = defaultCmd;
this.suffix = suffix;
}
@@ -33,8 +33,8 @@ public enum GlueTypeEnum {
return isScript;
}
- public String getCmd() {
- return cmd;
+ public String getDefaultCmd() {
+ return defaultCmd;
}
public String getSuffix() {
diff --git a/xxl-job-core/src/main/java/com/xxl/job/core/handler/impl/ScriptJobHandler.java b/xxl-job-core/src/main/java/com/xxl/job/core/handler/impl/ScriptJobHandler.java
index 452c3877..88a71ab4 100644
--- a/xxl-job-core/src/main/java/com/xxl/job/core/handler/impl/ScriptJobHandler.java
+++ b/xxl-job-core/src/main/java/com/xxl/job/core/handler/impl/ScriptJobHandler.java
@@ -7,6 +7,7 @@ import com.xxl.job.core.log.XxlJobFileAppender;
import com.xxl.job.core.log.XxlJobLogger;
import com.xxl.job.core.util.ScriptUtil;
import com.xxl.job.core.util.ShardingUtil;
+import org.springframework.util.StringUtils;
import java.io.File;
@@ -53,7 +54,7 @@ public class ScriptJobHandler extends IJobHandler {
}
// cmd
- String cmd = glueType.getCmd();
+ String cmd = getCmd();
// make script file
String scriptFileName = XxlJobFileAppender.getGlueSrcPath()
@@ -89,4 +90,24 @@ public class ScriptJobHandler extends IJobHandler {
}
+ /**
+ * 获取相应GLUE任务的CMD命令,优先从环境变量中读取命令
+ * <ul>
+ * <li>GLUE_SHELL_EXEC</li>
+ * <li>GLUE_PYTHON_EXEC</li>
+ * <li>GLUE_PHP_EXEC</li>
+ * <li>GLUE_NODEJS_EXEC</li>
+ * <li>GLUE_POWERSHELL_EXEC</li>
+ * </ul>
+ *
+ * @return GLUE任务的cmd命令
+ */
+ private String getCmd() {
+ String env = glueType.name() + "_EXEC";
+ String value = System.getenv(env);
+ if (!StringUtils.isEmpty(value)) {
+ return value;
+ }
+ return glueType.getDefaultCmd();
+ }
}
@Shawyeok 谢谢哦,这样改的好多哦, 我后来有改了,就把python改成python3,如果需要多个版本我就编译多个版本的执行器 GLUE_PYTHON("GLUE(Python)", true, "python3", ".py"),
其实不用这么麻烦,把python的软链接改为由python2改为python3就行了,这样python默认就是python3,不用像网上说的去修改源码,亲测可以