INFO-python节点禁用模块说明
更新时间: 2024-03-11 02:53:17
阅读 574
Python 代码检查配置
为避免出现未知异常,当在平台上运行python脚本时,系统会默认禁用部分模块。python的代码检查借鉴了linkis的相关设计,关键数据存储在三个表中。具体字段参见表描述。
表名 | 描述 |
---|---|
cluster_exception_msg | 代码检查规则对应的报错信息 |
source_code_check_rule | 代码检查规则,正则 |
source_code_check_rule_interrupt_level | 对面检查规则中断执行的默认级别 |
预置规则列表
默认禁用的函数列表如下:
规则名称 | 禁用模块的正则表达式 |
---|---|
不允许用户导入sys模块 | import\s+sys from\s+sys\s+import\s+. |
不允许用户导入os模块 | import\s+os from\s+os\s+import\s+. |
不允许用户私自开启进程 | import\s+multiprocessing from\s+multiprocessing\s+import\s+. import\s+subprocess from\s+subprocess\s+import\s+. |
不允许用户导入numpy包 | from\s+numpy\s+import\s+.* |
禁止用户stop sparkContext | sc\.stop |
如何新增规则?
在 cluster_exception_msg 表中插入对应的异常信息。
INSERT INTO `cluster_exception_msg` (`code`, `en_msg`, `cn_msg`, `param_num`) values (20100, 'can not use sys module', '不能使用sys模块', 0);
在 source_code_check_rule 表中插入对应的规则,需要确定 代码类型、规则级别等字段。例如:
INSERT INTO `source_code_check_rule` (`code_type`, `rule_level`, `check_rule`, `exception_msg_code`) values ('PYTHON', 'ERROR', 'import\\s+sys', 对应异常信息的ID);
如果表 source_code_check_rule_interrupt_level 中没有对应代码类型的中断级别,需要新增,例如:
INSERT INTO `source_code_check_rule_interrupt_level` (`code_type`, `rule_level`) values ('PYTHON', 'ERROR');
重启所有的Azkaban executor。
如何关闭规则?
- 在 source_code_check_rule 表中找到对应规则,把 rule_level字段的级别 (ERROR、WARING、INFO)调整到大于 source_code_check_rule_interrupt_level 中对应代码类型的中断规则即可。例如: Python 默认的中断级别是 ERROR,需要把对应的规则调整成 WARING或INFO。
update source_code_check_rule set rule_level = "INFO" where id = 对应的规则id;
- 重启所有的Azkaban executor。
文档反馈
以上内容对您是否有帮助?