1
ClericPy 2020-12-07 22:00:25 +08:00
公司文化全程拒绝服务走离线工具, 所以最近也折腾类似的, 软件工具都带着依赖被我打包成 pyz 单文件丢在 nas 挂盘直接导入了, 结果遇到 reload 当场翻车
然后工作全用 typed 或者 fire 做成命令行版本调用了(stdout / stdin)... 总算能跑通了, 至于优化什么的, 还是不去过度设计了, 又不是做艺术品, 能跑就得了 |
2
no1xsyzy 2020-12-07 22:15:18 +08:00
用多进程呢?开个工作进程跑用户脚本得到 trigger module 对象,然后把参数传过去调用执行,结果传回。
|
3
fasionchan 2020-12-08 08:52:05 +08:00
关于第一、二、三点,可以尝试自行将自定义脚本内容读入、编译、然后执行,得到你想要的 check 方法,不需要依赖 import 机制。具体做法可以参考我写的文章: https://www.imooc.com/read/76/article/1918
关于第四点,二次开发本来就要对系统的安全性负责,做好用户隔离即可。用户隔离要最好做到系统级别的隔离,进程级别的隔离是不够的:如果一个用户执行了关机指令,另一个用户躺着中枪? |
4
hahaba 2020-12-08 09:26:14 +08:00
最好用线程去处理,子线程死掉,不会影响父线程
|
5
krixaar 2020-12-08 09:57:45 +08:00
搞成跨进程通信(再来个 flask 然后 request 疯狂 post ),或者集成个 Lupa 然后让用户写 lua 脚本,你这边做个控制台给每个脚本安优先级数字,跑的时候按优先级来。
|
6
kaneg 2020-12-08 12:23:40 +08:00 via iPhone
这个程序是跑在你们的服务器还是用户自己的?
如果是你们的,如果运行环境不做隔离或者限制,用户的代码可以做很多危险的事,比如获取系统敏感信息,删除文件等。 |