关于热加载
rexdf opened this issue · comments
- 如果没有实质性修改configs,不要重启程序
啥样的算 实质性修改 呀?
暂时我只想做name path cmd这三个的对比。enabled要不要算还在考虑
日志我看看
2017-12-25 22:42:00 [bt ≖‿≖✧] [method:start program is still running.] [left count: 0] [schedule next] 2017-12-25 22:43:00
2017-12-25 22:43:00 [bt ≖‿≖✧] [method:start program is still running.] [left count: 0] [schedule next] 2017-12-25 22:44:00
2017-12-25 22:44:00 [bt ≖‿≖✧] [method:start program is still running.] [left count: 0] [schedule next] 2017-12-25 22:45:00
2017-12-25 22:44:00 [ddns ๑乛◡乛๑] [method:restart done.] [left count: 0] [schedule next] 2017-12-25 23:00:00
2017-12-25 22:45:00 [bt ≖‿≖✧] [method:start program is still running.] [left count: 0] [schedule next] 2017-12-25 22:46:00
2017-12-25 22:46:00 [bt ≖‿≖✧] [method:start program is still running.] [left count: 0] [schedule next] 2017-12-25 22:47:00
2017-12-25 22:47:00 [bt ≖‿≖✧] [method:start program is still running.] [left count: 0] [schedule next] 2017-12-25 22:48:00
2017-12-25 22:48:00 [bt ≖‿≖✧] [method:start program is still running.] [left count: 0] [schedule next] 2017-12-25 22:49:00
2017-12-25 22:49:00 [bt ≖‿≖✧] [method:start program is still running.] [left count: 0] [schedule next] 2017-12-25 22:50:00
2017-12-25 22:50:00 [bt ≖‿≖✧] [method:start program is still running.] [left count: 0] [schedule next] 2017-12-25 22:51:00
2017-12-25 22:51:00 [bt ≖‿≖✧] [method:start program is still running.] [left count: 0] [schedule next] 2017-12-25 22:52:00
2017-12-25 22:52:00 [bt ≖‿≖✧] [method:start program is still running.] [left count: 0] [schedule next] 2017-12-25 22:53:00
2017-12-25 22:53:00 [bt ≖‿≖✧] [method:start started.] [left count: 0] [schedule next] 2017-12-25 22:54:00
2017-12-25 22:54:00 [bt ≖‿≖✧] [method:start program is still running.] [left count: 0] [schedule next] 2017-12-25 22:55:00
2017-12-25 22:55:00 [bt ≖‿≖✧] [method:start program is still running.] [left count: 0] [schedule next] 2017-12-25 22:56:00
2017-12-25 22:56:00 [bt ≖‿≖✧] [method:start program is still running.] [left count: 0] [schedule next] 2017-12-25 22:57:00
2017-12-25 22:57:00 [bt ≖‿≖✧] [method:start program is still running.] [left count: 0] [schedule next] 2017-12-25 22:58:00
2017-12-25 22:58:00 [bt ≖‿≖✧] [method:start program is still running.] [left count: 0] [schedule next] 2017-12-25 22:59:00
2017-12-25 22:59:00 [bt ≖‿≖✧] [method:start program is still running.] [left count: 0] [schedule next] 2017-12-25 23:00:00
22:53:00为啥是start呢 是不是这时候弹出来的
这个是出现非常严重的bug了,有具体的触发流程么?还记得改了啥之后触发的么
这个是我现在头疼的那个BT程序的问题 被人攻击了 老会错误退出 跟那边的作者也反馈了
但是我现在也抓包 不知道是什么导致的 解决不了 他退出的时候我就定时任务重启他
那个时间 应该是错误退出了 然后重启的
额 记得 我修改了
/* // 可选 计划任务
"crontab_config": { // crontab配置
"crontab": "0 *\/1 * * * *", // crontab语法具体参考上面8
"method": "restart", // 支持的状态有 start restart stop
"count": 0, // 0 表示infinite不只限制,大于0的整数,表示运行多少次就不运行了
// 可选
"enabled": true,
"log": "commandtrayhost.log", // 日志文件名,注释掉本行就禁掉log了
"log_level": 0, // log级别,缺省默认为0。0为仅仅记录crontab触发记录,1附加启动时的信息,2附加下次触发的信息
}, */
程序在运行的状态下 我把上面的计划任务改成了/……/批量备注掉
然后左击托盘点显/隐程序 激活弹窗 第一个窗口的提示上面没截图 是正常的 我取消
然后就出现了上面老的弹窗提示 我依然取消 然后在这里 重复多次 至少快10个这个老弹窗
然后最后取消就最终错误了
实在不行 这个取消按钮就不要了也行 我主要纠结的就是这个弹窗 这个弹窗会重复多次出现的BUG
点托盘就会重复多次出现(现在) 没有判断已经弹窗的情况下 (会多次弹窗)
我好像知道了 现在弹窗的问题 那个删除cache缺少逻辑判定
能不能 弹窗的时候 是 重启整个主程序 否=取消啥也不做(下次重启生效)
删除在判定是否有额外程序影响当前cache缓存 增加好像不影响 主要是减少影响的吧?然后做删除
因为我觉得现在的重启和重启整个程序没啥差别
(这里面可能有些逻辑问题 你看看)
目前我在升级系统,明天再看代码,暂时修改了就重启程序吧
重启自己比较难做(┓( ´∀` )┏)
你双击程序两次试试
那个删除的逻辑 应该在遇到错误读取不能的情况下 在做提示删除 这样?
不过现在cache里面好像缺少判定 都不知道谁是谁的窗口位置
重启自己....我想想
刚刚有一个新版本你再试试,现在编译慢很多,等会 应该因为升级导致了其他问题 还是不要试了
我目前想到的重启自身……大致是 点[是]以后去运行目录下的某个文件
然后那个文件的功能是结束主程序进程和运行目录的主程序
虽然是可以但是不是一个程序了 不是很完美
其实热加载并不算是核心功能,只是顺便加上的,不应该花过多时间去折腾这个。
不能重启只是因为我对其加了锁了,只要释放这个锁就好了,但是这会引入大量的代码,以及相当大的工作量。
那先不弄这个了吧 太麻烦先放着
用最新版的 log_level 改成3 然后看下日志 可以找下窗口显示出来的原因
OK 今晚的时候试下~[测试完毕/任务完成]
我现在测试一下1.9-b261的 记得这个版本的时候还挺稳定的 再看看……(好像也是隐藏失败了)
...好吧 刚刚测试了一下 好像log_level:3的时候重启脱离控制了 窗口都是正常的了
日志内容如下(它好像没记录下有用信息的说)
2017-12-26 12:50:00 [bt ≖‿≖✧] [method:start program is still running.] [left count: 0] [schedule next] 2017-12-26 12:51:00
2017-12-26 12:51:00 [bt ≖‿≖✧] [method:start program is still running.] [left count: 0] [schedule next] 2017-12-26 12:52:00
2017-12-26 12:52:00 [bt ≖‿≖✧] [method:start program is still running.] [left count: 0] [schedule next] 2017-12-26 12:53:00
2017-12-26 12:53:00 [bt ≖‿≖✧] [method:start started.] [left count: 0] [schedule next] 2017-12-26 12:54:00
2017-12-26 12:54:00 [bt ≖‿≖✧] [method:start program is still running.] [left count: 0] [schedule next] 2017-12-26 12:55:00
2017-12-26 12:55:00 [bt ≖‿≖✧] [method:start program is still running.] [left count: 0] [schedule next] 2017-12-26 12:56:00
2017-12-26 12:56:00 [bt ≖‿≖✧] [method:start program is still running.] [left count: 0] [schedule next] 2017-12-26 12:57:00
2017-12-26 12:57:00 [bt ≖‿≖✧] [method:start program is still running.] [left count: 0] [schedule next] 2017-12-26 12:58:00
2017-12-26 12:58:00 [bt ≖‿≖✧] [method:start program is still running.] [left count: 0] [schedule next] 2017-12-26 12:59:00
2017-12-26 12:59:00 [bt ≖‿≖✧] [method:start program is still running.] [left count: 0] [schedule next] 2017-12-26 13:00:00
2017-12-26 13:00:00 [bt ≖‿≖✧] [method:start started.] [left count: 0] [schedule next] 2017-12-26 13:01:00
2017-12-26 13:00:00 [ddns ๑乛◡乛๑] [si.wShowWindow:SW_HIDE start_show:false] []
2017-12-26 13:00:00 [ddns ๑乛◡乛๑] [method:restart done.] [left count: 0] [schedule next] 2017-12-26 13:22:00
2017-12-26 13:01:00 [bt ≖‿≖✧] [method:start program is still running.] [left count: 0] [schedule next] 2017-12-26 13:02:00
是不是13点的那次重启显示出来的?
对 [method:start started.]那行就是重启的时候
这个很诡异了 si.wShowWindow:SW_HIDE start_show:false 这表示是按照隐藏的方式启动的。
经常不隐藏重启 偶尔有会隐藏重启 刚刚测试的旧版本b261也是不行 又失效了之前那晚还成功过
ddns是不是会自己显示自己啊
都设置的隐藏 也不受cache影响 有时候他会隐藏的重启 有时候他就突然冒出来
我严重怀疑ddns有自己显示自己的功能
si.wShowWindow:SW_HIDE start_show:false
这个日志是在我运行之前把给操作系统的信息打印出来的,也就是告诉操作系统以隐藏的方式启动这个程序。除非它自己显示自己。
我大约想到一种可能了
假如ddns里面有一条start cmd
它自己再开一个cmd那么我就管不着了
也就是有的时候ddns没有执行那条命令,有ddns的源码么 我看看就知道了
没的~我就想说 正常我开cmd去运行命令 都是不会自动结束的 比如BT那个命令 正常异常退出有BUG残留信息 而用/c 模式启动 就是单独的cmd运行
肯定不是命令的问题 因为现在的手动隐藏和显示的重启都是正常的 只有计划任务不正常!
run.bat里面呢
E:\caddy\DDNS-2.1.2\run.bat
@ECHO OFF
IF "%1" EQU "" (
python "%~dp0run.py" -c "%~dp0config.json"
PAUSE
) ELSE (
python "%~dp0run.py" -c "%~dp0config.json" >> "%1"
)
我觉得你执行执行python "%~dp0run.py" -c "%~dp0config.json"
比较好
"path": "path_to_python",
"cmd": "python.exe \"run.py\" -c \"config.json\"",
"working_directory":"E:\\caddy\\DDNS-2.1.2",
那个pause语句导致的窗口
这是CommandTrayHost输出的还是你手打的?
我上面的配置的经过CommandTrayHost应该被转义了啊
你按照我上面的那个配置应该就好了
这是给操作系统用的,手打的无效的
我测试BT命令拿掉他好像也是会隐藏启动失败呢……
贴完整的配置看看
CommandTrayHost如果用bat的可能会有各种失效
尽量不要用bat
bat经过两层调用后会溢出
"path": "path_to_python", 这个是让你改一下的意思
"path":"E:\\caddy\\DDNS-2.1.2",
如果你没装python,那么用这个试试
bt的bat也贴出来我来改一下 不要用bat了
打where Python把结果贴出来看看
不行……DDNS那样配置会错误不能运行
可是以前没用计划任务的时候他们都能隐藏启动好好的呢
溢出就是实际上不受托管了,多层子进程是没办法控制的
打where Python
把结果贴出来看看.
我这样说吧 你就当做CommandTrayHost从来就没支持过bat运行吧。bat脚本的那点功能纯属增加麻烦。
哦~我开远程你来弄下
C:\Users\Administrator>where Python
C:\Program Files\Python35\python.exe
"cmd": "python.exe \"run.py\" -c \"config.json\"",
"working_directory":"E:\\caddy\\DDNS-2.1.2",