Skip to content

在Docker模式下运行遇到的一些问题 #1298

@ChunxYa

Description

@ChunxYa

在提问之前...

  • 我已经搜索了现有的 issues
  • 我在提问题之前至少花费了 5 分钟来思考和准备
  • 我已经阅读了文档中的 常见问题(FAQ)
  • 这个问题出现了至少三次,不是偶发的
  • 我使用 OAS 的 dev 分支

描述你的问题

因为在Alas中使用过Docker模式,且我看到在项目中提供了docker-compose文件,就尝试进行了部署。在这个过程遇到了点问题

1.Windows依赖,在项中初始化和操作有几个windows的方法,我尝试移除后可以工作,但基于项目熟悉度和Python水平问题未深究可能造成的影响。调整的地方有:

1.1.module/device/screenshot.py:

def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        # super(Window, self).__init__(*args, **kwargs) #注释
        super(Window, self).__init__() #取消参数传递

    @cached_property
    def screenshot_methods(self):
        return {
            'ADB': self.screenshot_adb,
            'ADB_nc': self.screenshot_adb_nc,
            'uiautomator2': self.screenshot_uiautomator2,
            # 'aScreenCap': self.screenshot_ascreencap,
            # 'aScreenCap_nc': self.screenshot_ascreencap_nc,
            'DroidCast': self.screenshot_droidcast,
            'DroidCast_raw': self.screenshot_droidcast_raw,
            'scrcpy': self.screenshot_scrcpy,
            #'window_background': self.screenshot_window_background, #取消window_background
            'nemu_ipc': self.screenshot_nemu_ipc
        } 

1.2.module/device/control.py:

@cached_property
    def click_methods(self):
        return {
            'ADB': self.click_adb,
            'uiautomator2': self.click_uiautomator2,
            'minitouch': self.click_minitouch#,
            #'window_message': self.click_window_message 取消
            # 'Hermit': self.click_hermit,
            # 'MaaTouch': self.click_maatouch,
        }

    @cached_property
    def long_click_methods(self):
        return {
            'ADB': self.long_click_adb,
            'uiautomator2': self.long_click_uiautomator2,
            'minitouch': self.long_click_minitouch,
            #'window_message': self.long_click_window_message, 取消
            'scrcpy': self.long_click_scrcpy
            # 'Hermit': self.click_hermit,
            # 'MaaTouch': self.click_maatouch,
        }

调整完后在脚本中不选择相关的截图和操作模式即可正常工作。

2.Dokcer进程管理模式差异(我自认为,但是可能不是这个原因),表现为启动容器后,OASX可以正常访问,但是当我启动调度器后手动关闭,如果前没有正在运行的调度器时,就会触发websocket的关闭,但是我同时启动了两个调度器,任意关闭其一都不会导致这个问题。只有关闭调度器后且没有正常运行的调度器才存在这个问题,此时我需要手动重启容器才可重新访问

如何复现

  1. 前往 '...'
  2. 点击 '....'
  3. 滑动到 '....'
  4. 出现问题

预期行为

停止调度器后,不应中断OASX对OAS的访问,目前会导致OAS无法访问得重启容器。

相关 Logs

控制台:
ERROR    2025-12-08 15:56:10.788 │ AdbError: device '10.10.10.210:5557' not found                                       
CRITICAL 2025-12-08 15:56:10.791 │ Retry screenshot_droidcast_raw() failed                                              
CRITICAL 2025-12-08 15:56:10.794 │                                                                                      
CRITICAL 2025-12-08 15:56:11.196 │ Request human takeover                                                               
INFO     2025-12-08 15:56:11.199 │ Notifier: OAS2                                                                       
INFO     2025-12-08 15:56:11.202 │ Script oas2 process exit                                                             
ERROR    2025-12-08 15:56:11.205 │ Error: 1                                                                             
INFO:     Shutting down
WARNING  2025-12-08 15:56:17.443 │ [oas2] websocket disconnect                                                          
INFO:     connection closed
Unexpected ASGI message 'websocket.close', after sending 'websocket.close'.
WARNING  2025-12-08 15:56:17.454 │ [oas1] websocket disconnect                                                          
INFO:     connection closed
INFO:     Waiting for application shutdown.
Unexpected ASGI message 'websocket.close', after sending 'websocket.close'.
INFO     2025-12-08 15:56:17.544 │ OAS web service shutdown done                                                        
INFO:     Application shutdown complete.
INFO:     Finished server process [7]


Server.txt:
════════════════════════════════════════════════════════════════════════════════
──────────────────────────────────── START ─────────────────────────────────────
════════════════════════════════════════════════════════════════════════════════
2025-12-08 15:32:16.919 |            logger.py:0312 |     INFO | <<< LAUNCHER CONFIG >>>                                                                        
2025-12-08 15:32:16.923 |            logger.py:0320 |     INFO | [Host] 0.0.0.0                                                                                 
2025-12-08 15:32:16.926 |            logger.py:0320 |     INFO | [Port] 22267                                                                                   
2025-12-08 15:32:16.927 |            logger.py:0320 |     INFO | [Reload] False                                                                                 
2025-12-08 15:32:18.643 |               app.py:0043 |     INFO | OAS web service startup done                                                                   
2025-12-08 15:32:18.979 |            config.py:0226 |     INFO | Pending tasks: ['Restart', 'WantedQuests']                                                     
2025-12-08 15:32:18.984 |            logger.py:0320 |     INFO | [Task] Restart (Enable, 0, 2025-12-05 17:50:47)                                                
2025-12-08 15:51:18.293 |      config_model.py:0405 |     INFO | Set arg oas1.script.device.control_method.minitouch                                            
2025-12-08 15:51:22.801 |      config_model.py:0405 |     INFO | Set arg oas1.script.device.control_method.adb                                                  
2025-12-08 15:51:39.853 |    script_process.py:0036 |  WARNING | Script oas1 is initialized                                                                     
2025-12-08 15:55:33.150 |    config_manager.py:0067 |     INFO | copy /app/OnmyojiAutoScript/config/oas1.json to /app/OnmyojiAutoScript/config/oas2.json        
2025-12-08 15:55:47.548 |      config_model.py:0405 |     INFO | Set arg oas2.script.device.serial.10.10.10.210:5557                                            
2025-12-08 15:56:03.153 |            config.py:0234 |     INFO | No task pending                                                                                
2025-12-08 15:56:03.162 |            logger.py:0320 |     INFO | [Task] Restart (Enable, 0, 2025-12-09 09:05:00)                                                
2025-12-08 15:56:17.443 |     script_router.py:0232 |  WARNING | [oas2] websocket disconnect                                                                    
2025-12-08 15:56:17.454 |     script_router.py:0232 |  WARNING | [oas1] websocket disconnect                                                                    
2025-12-08 15:56:17.544 |               app.py:0047 |     INFO | OAS web service shutdown done          


OAS1:
2025-12-08 15:54:31.634 |            logger.py:0320 |     INFO | [WQ_TYPE_4 0.010s] [探索]                                                                      
2025-12-08 15:54:31.678 |            logger.py:0320 |     INFO | [WQ_INFO_4 0.041s] [第三章(数量:6)]                                                         
2025-12-08 15:54:31.682 |       script_task.py:0356 |     INFO | [Wanted Quests] type: 探索 destination: 第三章 number: 6                                       
2025-12-08 15:54:31.719 |           control.py:0074 |     INFO | Click (1048,  276) @ WQ_GOTO_1                                                                 
2025-12-08 15:54:34.769 |           control.py:0074 |     INFO | Click ( 962,  514) @ CHANLLENGE_WQC_FIRE                                                       
───────────────────────────── GENERAL BATTLE START ─────────────────────────────
2025-12-08 15:54:35.645 |            logger.py:0310 |     INFO | GENERAL BATTLE START                                                                           
2025-12-08 15:54:35.647 |    general_battle.py:0038 |     INFO | Current count: 3                                                                               
2025-12-08 15:54:35.972 |    general_battle.py:0058 |     INFO | Wait to enter the preparation page                                                             
2025-12-08 15:54:38.033 |            device.py:0134 |     INFO | Add stuck record: BATTLE_STATUS_S                                                              
2025-12-08 15:54:38.037 |       script_task.py:0262 |     INFO | Start battle process                                                                           
2025-12-08 15:55:08.067 |           control.py:0074 |     INFO | Click ( 454,  233) @ GB_WIN                                                                    
2025-12-08 15:55:09.265 |       script_task.py:0272 |     INFO | Win battle                                                                                     
2025-12-08 15:55:09.553 |           control.py:0074 |     INFO | Click ( 682,  563) @ GB_REWARD                                                                 
2025-12-08 15:55:10.773 |           control.py:0074 |     INFO | Click ( 597,  601) @ GB_REWARD                                                                 
2025-12-08 15:55:12.311 |           control.py:0074 |     INFO | Click (1045,  135) @ UI_UI_BACK_RED                                                            
2025-12-08 15:55:14.421 |       script_task.py:0069 |     INFO | get reward                                                                                     
2025-12-08 15:55:14.720 |           control.py:0074 |     INFO | Click (  85,  189) @ WQ_WQ_BOX                                                                 
2025-12-08 15:55:15.648 |           control.py:0074 |     INFO | Click ( 995,  360) @ UI_UI_REWARD                                                              
2025-12-08 15:55:16.247 |         base_task.py:0642 |     INFO | Get reward success                                                                             
2025-12-08 15:55:16.588 |       script_task.py:0066 |     INFO | no more wq remained                                                                            
2025-12-08 15:55:16.597 |            config.py:0373 |     INFO | Delay task `wanted_quests` to 2025-12-09 15:55:16 (success=True, server_update=True)           
2025-12-08 15:55:16.612 |            logger.py:0320 |     INFO | [wanted_quests.scheduler.next_run] 2025-12-09 15:55:16                                         
2025-12-08 15:55:16.615 |      config_model.py:0169 |     INFO | auto save config                                                                               
2025-12-08 15:55:16.626 |            script.py:0499 |     INFO | Scheduler: End task `WantedQuests`                                                             
2025-12-08 15:55:16.637 |            config.py:0234 |     INFO | No task pending                                                                                
2025-12-08 15:55:16.640 |            logger.py:0320 |     INFO | [Task] Restart (Enable, 0, 2025-12-09 09:05:00)                                                
2025-12-08 15:55:16.644 |            script.py:0345 |     INFO | Goto main page during wait                                                                     
2025-12-08 15:55:16.872 |            script.py:0379 |     INFO | module_path: /app/OnmyojiAutoScript/tasks/GotoMain/script_task.py, module_name: script_task    
2025-12-08 15:55:16.900 |           game_ui.py:0103 |     INFO | UI get current page                                                                            
2025-12-08 15:55:16.943 |            logger.py:0320 |     INFO | [UI] page_exploration                                                                          
2025-12-08 15:55:16.946 |            logger.py:0312 |     INFO | <<< UI GOTO PAGE_MAIN >>>                                                                      
2025-12-08 15:55:16.950 |           game_ui.py:0230 |     INFO | Current page: page_exploration. Following shortest path:                                       
2025-12-08 15:55:16.953 |           game_ui.py:0232 |     INFO | page_exploration -> page_main                                                                  
2025-12-08 15:55:16.955 |           game_ui.py:0277 |     INFO | Page switch: page_exploration -> page_main                                                     
2025-12-08 15:55:17.159 |           control.py:0074 |     INFO | Click (  79,   68) @ PAGE_BACK_BLUE                                                            
2025-12-08 15:55:17.216 |           game_ui.py:0089 |     INFO | Waiting for page_main                                                                          
2025-12-08 15:55:19.592 |           game_ui.py:0302 |     INFO | [2.4s]Page arrived page_main                                                                   


OAS2:
════════════════════════════════════════════════════════════════════════════════
──────────────────────────────────── START ─────────────────────────────────────
════════════════════════════════════════════════════════════════════════════════
2025-12-08 15:56:03.459 |            logger.py:0170 |     INFO | Log cleanup finished                                                                           
2025-12-08 15:56:03.463 |            script.py:0445 |     INFO | Start scheduler loop: oas2                                                                     
2025-12-08 15:56:03.471 |      config_model.py:0169 |     INFO | auto save config                                                                               
2025-12-08 15:56:03.489 |            config.py:0234 |     INFO | No task pending                                                                                
2025-12-08 15:56:03.492 |            logger.py:0320 |     INFO | [Task] Restart (Enable, 0, 2025-12-09 09:05:00)                                                
2025-12-08 15:56:03.495 |            script.py:0345 |     INFO | Goto main page during wait                                                                     
════════════════════════════════════ DEVICE ════════════════════════════════════
2025-12-08 15:56:03.499 |            logger.py:0307 |     INFO | DEVICE                                                                                         
2025-12-08 15:56:03.501 |            logger.py:0320 |     INFO | [AdbBinary] adb                                                                                
2025-12-08 15:56:03.503 |            logger.py:0320 |     INFO | [AdbClient] AdbClient(127.0.0.1, 5037)                                                         
2025-12-08 15:56:03.506 |            logger.py:0312 |     INFO | <<< DETECT DEVICE >>>                                                                          
2025-12-08 15:56:03.509 |        connection.py:0750 |     INFO | Here are the available devices, copy to Alas.Emulator.Serial to use it or set                  
Alas.Emulator.Serial="auto"                                                                                                                                     
2025-12-08 15:56:03.512 |        connection.py:0757 |     INFO | 10.10.10.210:5556                                                                              
2025-12-08 15:56:03.517 |        connection.py:0553 |     INFO | failed to connect to '10.10.10.210:5557': Connection refused                                   
2025-12-08 15:56:03.522 |        connection.py:0553 |     INFO | failed to connect to '10.10.10.210:5557': Connection refused                                   
2025-12-08 15:56:03.526 |        connection.py:0553 |     INFO | failed to connect to '10.10.10.210:5557': Connection refused                                   
2025-12-08 15:56:03.528 |        connection.py:0571 |  WARNING | Failed to connect 10.10.10.210:5557 after 3 trial, assume connected                            
2025-12-08 15:56:03.531 |            logger.py:0312 |     INFO | <<< DETECT DEVICE >>>                                                                          
2025-12-08 15:56:03.533 |        connection.py:0750 |     INFO | Here are the available devices, copy to Alas.Emulator.Serial to use it or set                  
Alas.Emulator.Serial="auto"                                                                                                                                     
2025-12-08 15:56:03.537 |        connection.py:0757 |     INFO | 10.10.10.210:5556                                                                              
2025-12-08 15:56:03.539 |            logger.py:0320 |     INFO | [AdbDevice] AdbDevice(serial=10.10.10.210:5557)                                                
2025-12-08 15:56:03.542 |            logger.py:0320 |     INFO | [PackageName] com.netease.onmyoji                                                              
2025-12-08 15:56:03.545 |        screenshot.py:0186 |     INFO | Screenshot interval set to 0.3s                                                                
2025-12-08 15:56:03.548 |            logger.py:0354 |    ERROR | AdbError: device '10.10.10.210:5557' not found                                                 
2025-12-08 15:56:03.553 |        connection.py:0553 |     INFO | failed to connect to '10.10.10.210:5557': Connection refused                                   
2025-12-08 15:56:03.557 |        connection.py:0553 |     INFO | failed to connect to '10.10.10.210:5557': Connection refused                                   
2025-12-08 15:56:03.560 |        connection.py:0553 |     INFO | failed to connect to '10.10.10.210:5557': Connection refused                                   
2025-12-08 15:56:03.563 |        connection.py:0571 |  WARNING | Failed to connect 10.10.10.210:5557 after 3 trial, assume connected                            
2025-12-08 15:56:03.565 |            logger.py:0312 |     INFO | <<< DETECT DEVICE >>>                                                                          
2025-12-08 15:56:03.567 |        connection.py:0750 |     INFO | Here are the available devices, copy to Alas.Emulator.Serial to use it or set                  
Alas.Emulator.Serial="auto"                                                                                                                                     
2025-12-08 15:56:03.571 |        connection.py:0757 |     INFO | 10.10.10.210:5556                                                                              
2025-12-08 15:56:03.573 |            logger.py:0312 |     INFO | <<< DETECT DEVICE >>>                                                                          
2025-12-08 15:56:03.576 |        connection.py:0750 |     INFO | Here are the available devices, copy to Alas.Emulator.Serial to use it or set                  
Alas.Emulator.Serial="auto"                                                                                                                                     
2025-12-08 15:56:03.579 |        connection.py:0757 |     INFO | 10.10.10.210:5556                                                                              
2025-12-08 15:56:03.582 |            logger.py:0354 |    ERROR | AdbError: device '10.10.10.210:5557' not found                                                 
2025-12-08 15:56:04.588 |        connection.py:0553 |     INFO | failed to connect to '10.10.10.210:5557': Connection refused                                   
2025-12-08 15:56:04.592 |        connection.py:0553 |     INFO | failed to connect to '10.10.10.210:5557': Connection refused                                   
2025-12-08 15:56:04.597 |        connection.py:0553 |     INFO | failed to connect to '10.10.10.210:5557': Connection refused                                   
2025-12-08 15:56:04.600 |        connection.py:0571 |  WARNING | Failed to connect 10.10.10.210:5557 after 3 trial, assume connected                            
2025-12-08 15:56:04.604 |            logger.py:0312 |     INFO | <<< DETECT DEVICE >>>                                                                          
2025-12-08 15:56:04.606 |        connection.py:0750 |     INFO | Here are the available devices, copy to Alas.Emulator.Serial to use it or set                  
Alas.Emulator.Serial="auto"                                                                                                                                     
2025-12-08 15:56:04.610 |        connection.py:0757 |     INFO | 10.10.10.210:5556                                                                              
2025-12-08 15:56:04.612 |            logger.py:0312 |     INFO | <<< DETECT DEVICE >>>                                                                          
2025-12-08 15:56:04.615 |        connection.py:0750 |     INFO | Here are the available devices, copy to Alas.Emulator.Serial to use it or set                  
Alas.Emulator.Serial="auto"                                                                                                                                     
2025-12-08 15:56:04.619 |        connection.py:0757 |     INFO | 10.10.10.210:5556                                                                              
2025-12-08 15:56:04.622 |            logger.py:0354 |    ERROR | AdbError: device '10.10.10.210:5557' not found                                                 
2025-12-08 15:56:07.628 |        connection.py:0553 |     INFO | failed to connect to '10.10.10.210:5557': Connection refused                                   
2025-12-08 15:56:07.634 |        connection.py:0553 |     INFO | failed to connect to '10.10.10.210:5557': Connection refused                                   
2025-12-08 15:56:07.647 |        connection.py:0553 |     INFO | failed to connect to '10.10.10.210:5557': Connection refused                                   
2025-12-08 15:56:07.657 |        connection.py:0571 |  WARNING | Failed to connect 10.10.10.210:5557 after 3 trial, assume connected                            
2025-12-08 15:56:07.669 |            logger.py:0312 |     INFO | <<< DETECT DEVICE >>>                                                                          
2025-12-08 15:56:07.681 |        connection.py:0750 |     INFO | Here are the available devices, copy to Alas.Emulator.Serial to use it or set                  
Alas.Emulator.Serial="auto"                                                                                                                                     
2025-12-08 15:56:07.691 |        connection.py:0757 |     INFO | 10.10.10.210:5556                                                                              
2025-12-08 15:56:07.695 |            logger.py:0312 |     INFO | <<< DETECT DEVICE >>>                                                                          
2025-12-08 15:56:07.699 |        connection.py:0750 |     INFO | Here are the available devices, copy to Alas.Emulator.Serial to use it or set                  
Alas.Emulator.Serial="auto"                                                                                                                                     
2025-12-08 15:56:07.705 |        connection.py:0757 |     INFO | 10.10.10.210:5556                                                                              
2025-12-08 15:56:07.710 |            logger.py:0354 |    ERROR | AdbError: device '10.10.10.210:5557' not found                                                 
2025-12-08 15:56:10.719 |        connection.py:0553 |     INFO | failed to connect to '10.10.10.210:5557': Connection refused                                   
2025-12-08 15:56:10.726 |        connection.py:0553 |     INFO | failed to connect to '10.10.10.210:5557': Connection refused                                   
2025-12-08 15:56:10.740 |        connection.py:0553 |     INFO | failed to connect to '10.10.10.210:5557': Connection refused                                   
2025-12-08 15:56:10.752 |        connection.py:0571 |  WARNING | Failed to connect 10.10.10.210:5557 after 3 trial, assume connected                            
2025-12-08 15:56:10.764 |            logger.py:0312 |     INFO | <<< DETECT DEVICE >>>                                                                          
2025-12-08 15:56:10.771 |        connection.py:0750 |     INFO | Here are the available devices, copy to Alas.Emulator.Serial to use it or set                  
Alas.Emulator.Serial="auto"                                                                                                                                     
2025-12-08 15:56:10.775 |        connection.py:0757 |     INFO | 10.10.10.210:5556                                                                              
2025-12-08 15:56:10.777 |            logger.py:0312 |     INFO | <<< DETECT DEVICE >>>                                                                          
2025-12-08 15:56:10.781 |        connection.py:0750 |     INFO | Here are the available devices, copy to Alas.Emulator.Serial to use it or set                  
Alas.Emulator.Serial="auto"                                                                                                                                     
2025-12-08 15:56:10.785 |        connection.py:0757 |     INFO | 10.10.10.210:5556                                                                              
2025-12-08 15:56:10.788 |            logger.py:0354 |    ERROR | AdbError: device '10.10.10.210:5557' not found                                                 
2025-12-08 15:56:10.791 |         droidcast.py:0085 | CRITICAL | Retry screenshot_droidcast_raw() failed                                                        
2025-12-08 15:56:10.794 |            script.py:0425 | CRITICAL |                                                                                                
2025-12-08 15:56:11.196 |            script.py:0427 | CRITICAL | Request human takeover                                                                         
2025-12-08 15:56:11.199 |            config.py:0130 |     INFO | Notifier: OAS2                                                                                 
2025-12-08 15:56:11.202 |    script_process.py:0139 |     INFO | Script oas2 process exit                                                                       
2025-12-08 15:56:11.205 |            logger.py:0354 |    ERROR | Error: 1

截图

No response

还有别的吗?

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions