yzbyzz

Results 9 comments of yzbyzz

> 还需要当天的gui.txt FYI ```Text ═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════ START ═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════ 2022-06-21 00:00:07.857 | INFO | No update 2022-06-21 00:04:15.140 | INFO | End of log queue handler loop 2022-06-21 00:04:15.153 | INFO |...

补充一些信息,出现问题的环境 - Windows7 - MUMU 模拟器 做了如下操作,可以稳定复现更新失败的情况。 - 修改代码,主要如下 ```python # #1 app.py startup task_handler.add(updater.schedule_update(), 86400) # 修改为 task_handler.add(updater.schedule_update(), 5) # #2 updater.py schedule_update th._task.delay = get_next_time(self.schedule_time) # 修改为 th._task.delay...

``` 2022-06-24 23:55:14.055 | INFO | Remains instances: [] ``` 从日志来看,我猜测出问题的地方是在 updater.py 发现有更新,等待所有进程退出的过程中出错。(应该还没到执行更新的步骤。) 这里具体的问题在,ALAS 没有继续执行任务了,但是对应的进程还在运行。 从表现来看就是 ALAS 已经不会执行任务了,但是 Web 页面上 调度器按钮还是处于 “运行”状态,需要手动点击“停止”。 此时 ProcessManager 返回的 running_instances 才会为空,也才会执行后面的更新步骤。 我怀疑 Windows7 下发现更新时,不能正确停止对应的...

一些验证 ```Python 在 module/webui/process_manager.py 中增加方法 @classmethod def show_process(cls): """ Show process brief """ for process in cls._processes.values(): logger.info(f"[{process}] -> [{process.alive}]") 修改 module/webui/updater.py def _wait_update(self, instances, names): if self.state == "cancel":...

> ... > ``` > INFO 11:48:00.855 │ Update event detected > INFO 11:48:00.858 │ [alas] exited. Reason: Update > INFO 11:48:00.860 │ [] > ``` > > 结果应该只有一个主线程 Windows7...

重新跑了一次,日志比较清晰一点。 ### 完整日志 alas.txt ```Text ═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════ START ═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════ 2022-06-25 12:51:17.828 | INFO | Start scheduler loop: alas_硫磺岛 2022-06-25 12:51:17.847 | INFO | [Server] cn 2022-06-25 12:51:17.902 | INFO | Bind...

- Windows7 运行结果 ``` Run sysexit function True True True Call exit False False Kill process False Run osexit function True True True Call exit False False Kill process False...

看到有两种停止的方式 - alas 自己发现更新时 exit 退出进程。(Windows7 is_alive 一直为 true) https://github.com/LmeSzinc/AzurLaneAutoScript/blob/7bfff9019ea1740e93cb20ba34b7958230508b2b/alas.py#L322-L343 - 手动点击停止按钮,使用的 ProcessManager 的 stop 方法,方法使用了 kill。(Windows7 is_alive 会变为 false) https://github.com/LmeSzinc/AzurLaneAutoScript/blob/7bfff9019ea1740e93cb20ba34b7958230508b2b/module/webui/app.py#L326-L335 这里可能应该统一一下退出的方式?

我先按照上面提到的修改配置文件来禁止自动更新吧。 目前看来可能遇到这个问题的人不多,先暂时这样吧。 后面再看看能不能找到原因。