AzurLaneAutoScript icon indicating copy to clipboard operation
AzurLaneAutoScript copied to clipboard

随机终止Alas调度器会出现端口无法释放的问题

Open KawakazeNotFound opened this issue 6 months ago • 0 comments

在提问之前...

  • [x] 我已经搜索了现有的 issues
  • [x] 我在提问题之前至少花费了 5 分钟来思考和准备
  • [x] 我已经阅读了 Wiki 中的 常见问题(FAQ)
  • [x] 我正在使用最新版的 Alas

描述你的问题

终止调度器之后,调整了一下任务列表,然后再次打开Alas出现端口占用问题 重启模拟器或者游戏均可解决此问题 系统环境: Linux ChromeBox 6.8.0-60-generic 22.04.1-Ubuntu Intel i7-8800U / 8 GB RAM / 250GB SSD 使用的模拟器: redroid_11 x86_64(Docker) PORT MAP: 0.0.0.0:20304 20304/tcp :::20304 20304/tcp 0.0.0.0:5555 5555/tcp :::5555 5555/tcp 0.0.0.0:7903 7903/tcp :::7903 7903/tcp

如何复现

1.随机在一个时间停止调度器 2.短暂等待后重启调度器 3.无法排除端口占用,最后报错

预期行为

释放旧的占用端口,然后继续任务

相关 Logs

════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════
                                                             EVENTD                                                             
════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════
INFO     11:09:57.857 │ Connecting to unknown device, using host 127.0.0.1                                                      
INFO     11:09:57.912 │ [Device Orientation] 2 (HOME key on the top)                                                            
INFO     11:09:57.919 │ Reuse reverse: ReverseItem(remote='tcp:7903', local='tcp:20036')                                        
INFO     11:09:57.923 │ Reverse server listening on 127.0.0.1:20036, client can send data to 127.0.0.1:7903                     
ERROR    11:09:57.927 │ OSError: [Errno 98] Address already in use                                                              
         ╭───────────────────────────────────────── Traceback (most recent call last) ─────────────────────────────────────────╮
         │                                                                                                                     │
         │ /home/kawakaze/AzurLaneAutoScript/module/device/method/adb.py:32 in retry_wrapper                                   │
         │                                                                                                                     │
         │    30 │   │   │   │   │   time.sleep(retry_sleep(_))                                                                │
         │    31 │   │   │   │   │   init()                                                                                    │
         │ ❱  32 │   │   │   │   return func(self, *args, **kwargs)                                                            │
         │    33 │   │   │   # Can't handle                                                                                    │
         │    34 │   │   │   except RequestHumanTakeover:                                                                      │
         │                                                                                                                     │
         │ ╭──────────────────────────── locals ─────────────────────────────╮                                                 │
         │ │      _ = 0                                                      │                                                 │
         │ │   args = ()                                                     │                                                 │
         │ │      e = OSError(98, 'Address already in use')                  │                                                 │
         │ │   func = <function Adb.screenshot_adb_nc at 0x7f566c9f3dd0>     │                                                 │
         │ │   init = None                                                   │                                                 │
         │ │ kwargs = {}                                                     │                                                 │
         │ │   self = <module.device.device.Device object at 0x7f56ac36de50> │                                                 │
         │ ╰─────────────────────────────────────────────────────────────────╯                                                 │
         │ /home/kawakaze/AzurLaneAutoScript/module/device/method/adb.py:176 in screenshot_adb_nc                              │
         │                                                                                                                     │
         │   174 │   @retry                                                                                                    │
         │   175 │   def screenshot_adb_nc(self):                                                                              │
         │ ❱ 176 │   │   data = self.adb_shell_nc(['screencap'])                                                               │
         │   177 │   │   if len(data) < 500:                                                                                   │
         │   178 │   │   │   logger.warning(f'Unexpected screenshot: {data}')                                                  │
         │                                                                                                                     │
         │ ╭─────────────────────────── locals ────────────────────────────╮                                                   │
         │ │ self = <module.device.device.Device object at 0x7f56ac36de50> │                                                   │
         │ ╰───────────────────────────────────────────────────────────────╯                                                   │
         │                                                                                                                     │
         │ /home/kawakaze/AzurLaneAutoScript/module/device/connection.py:535 in adb_shell_nc                                   │
         │                                                                                                                     │
         │    533 │   │   """                                                                                                  │
         │    534 │   │   # Server start listening                                                                             │
         │ ❱  535 │   │   server = self.reverse_server                                                                         │
         │    536 │   │   server.settimeout(timeout)                                                                           │
         │    537 │   │   # Client send data, waiting for server accept                                                        │
         │                                                                                                                     │
         │ ╭────────────────────────────── locals ───────────────────────────────╮                                             │
         │ │ chunk_size = 262144                                                 │                                             │
         │ │        cmd = ['screencap']                                          │                                             │
         │ │       self = <module.device.device.Device object at 0x7f56ac36de50> │                                             │
         │ │    timeout = 5                                                      │                                             │
         │ ╰─────────────────────────────────────────────────────────────────────╯                                             │
         │                                                                                                                     │
         │ /home/kawakaze/AzurLaneAutoScript/module/base/decorator.py:97 in __get__                                            │
         │                                                                                                                     │
         │    95 │   │   │   return self                                                                                       │
         │    96 │   │                                                                                                         │
         │ ❱  97 │   │   value = obj.__dict__[self.func.__name__] = self.func(obj)                                             │
         │    98 │   │   return value                                                                                          │
         │    99                                                                                                               │
         │                                                                                                                     │
         │ ╭──────────────────────────────── locals ─────────────────────────────────╮                                         │
         │ │  cls = <class 'module.device.device.Device'>                            │                                         │
         │ │  obj = <module.device.device.Device object at 0x7f56ac36de50>           │                                         │
         │ │ self = <module.base.decorator.cached_property object at 0x7f566c9f1190> │                                         │
         │ ╰─────────────────────────────────────────────────────────────────────────╯                                         │
         │                                                                                                                     │
         │ /home/kawakaze/AzurLaneAutoScript/module/device/connection.py:476 in reverse_server                                 │
         │                                                                                                                     │
         │    474 │   │   │   │   │   f'client can send data to {host_port[2]}:{host_port[3]}')                                │
         │    475 │   │   server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)                                           │
         │ ❱  476 │   │   server.bind(host_port[:2])                                                                           │
         │    477 │   │   server.settimeout(5)                                                                                 │
         │    478 │   │   server.listen(5)                                                                                     │
         │                                                                                                                     │
         │ ╭──────────────────────────────────────────────────── locals ─────────────────────────────────────────────────────╮ │
         │ │ host_port = ('127.0.0.1', 20036, '127.0.0.1', 7903)                                                             │ │
         │ │      self = <module.device.device.Device object at 0x7f56ac36de50>                                              │ │
         │ │    server = <socket.socket fd=23, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0,           │ │
         │ │             laddr=('0.0.0.0', 0)>                                                                               │ │
         │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
         ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
         OSError: [Errno 98] Address already in use                                                                             
INFO     11:09:58.075 │ ^ 10 1280 720 255                                                                                       
INFO     11:09:58.303 │ Connecting to unknown device, using host 127.0.0.1                                                      
INFO     11:09:58.307 │ $ 255                                                                                                   
INFO     11:09:58.311 │ MaaTouch stream connected                                                                               
INFO     11:09:58.313 │ Reuse reverse: ReverseItem(remote='tcp:7903', local='tcp:20036')                                        
INFO     11:09:58.316 │ max_contact: 10; max_x: 1280; max_y: 720; max_pressure: 255                                             
INFO     11:09:58.319 │ Reverse server listening on 127.0.0.1:20036, client can send data to 127.0.0.1:7903                     
ERROR    11:09:58.322 │ OSError: [Errno 98] Address already in use                                                              
         ╭───────────────────────────────────────── Traceback (most recent call last) ─────────────────────────────────────────╮
         │                                                                                                                     │
         │ /home/kawakaze/AzurLaneAutoScript/module/device/method/adb.py:32 in retry_wrapper                                   │
         │                                                                                                                     │
         │    30 │   │   │   │   │   time.sleep(retry_sleep(_))                                                                │
         │    31 │   │   │   │   │   init()                                                                                    │
         │ ❱  32 │   │   │   │   return func(self, *args, **kwargs)                                                            │
         │    33 │   │   │   # Can't handle                                                                                    │
         │    34 │   │   │   except RequestHumanTakeover:                                                                      │
         │                                                                                                                     │
         │ ╭───────────────────────────────────── locals ─────────────────────────────────────╮                                │
         │ │      _ = 1                                                                       │                                │
         │ │   args = ()                                                                      │                                │
         │ │      e = OSError(98, 'Address already in use')                                   │                                │
         │ │   func = <function Adb.screenshot_adb_nc at 0x7f566c9f3dd0>                      │                                │
         │ │   init = <function retry.<locals>.retry_wrapper.<locals>.init at 0x7f56ac710cb0> │                                │
         │ │ kwargs = {}                                                                      │                                │
         │ │   self = <module.device.device.Device object at 0x7f56ac36de50>                  │                                │
         │ ╰──────────────────────────────────────────────────────────────────────────────────╯                                │
         │ /home/kawakaze/AzurLaneAutoScript/module/device/method/adb.py:176 in screenshot_adb_nc                              │
         │                                                                                                                     │
         │   174 │   @retry                                                                                                    │
         │   175 │   def screenshot_adb_nc(self):                                                                              │
         │ ❱ 176 │   │   data = self.adb_shell_nc(['screencap'])                                                               │
         │   177 │   │   if len(data) < 500:                                                                                   │
         │   178 │   │   │   logger.warning(f'Unexpected screenshot: {data}')                                                  │
         │                                                                                                                     │
         │ ╭─────────────────────────── locals ────────────────────────────╮                                                   │
         │ │ self = <module.device.device.Device object at 0x7f56ac36de50> │                                                   │
         │ ╰───────────────────────────────────────────────────────────────╯                                                   │
         │                                                                                                                     │
         │ /home/kawakaze/AzurLaneAutoScript/module/device/connection.py:535 in adb_shell_nc                                   │
         │                                                                                                                     │
         │    533 │   │   """                                                                                                  │
         │    534 │   │   # Server start listening                                                                             │
         │ ❱  535 │   │   server = self.reverse_server                                                                         │
         │    536 │   │   server.settimeout(timeout)                                                                           │
         │    537 │   │   # Client send data, waiting for server accept                                                        │
         │                                                                                                                     │
         │ ╭────────────────────────────── locals ───────────────────────────────╮                                             │
         │ │ chunk_size = 262144                                                 │                                             │
         │ │        cmd = ['screencap']                                          │                                             │
         │ │       self = <module.device.device.Device object at 0x7f56ac36de50> │                                             │
         │ │    timeout = 5                                                      │                                             │
         │ ╰─────────────────────────────────────────────────────────────────────╯                                             │
         │                                                                                                                     │
         │ /home/kawakaze/AzurLaneAutoScript/module/base/decorator.py:97 in __get__                                            │
         │                                                                                                                     │
         │    95 │   │   │   return self                                                                                       │
         │    96 │   │                                                                                                         │
         │ ❱  97 │   │   value = obj.__dict__[self.func.__name__] = self.func(obj)                                             │
         │    98 │   │   return value                                                                                          │
         │    99                                                                                                               │
         │                                                                                                                     │
         │ ╭──────────────────────────────── locals ─────────────────────────────────╮                                         │
         │ │  cls = <class 'module.device.device.Device'>                            │                                         │
         │ │  obj = <module.device.device.Device object at 0x7f56ac36de50>           │                                         │
         │ │ self = <module.base.decorator.cached_property object at 0x7f566c9f1190> │                                         │
         │ ╰─────────────────────────────────────────────────────────────────────────╯                                         │
         │                                                                                                                     │
         │ /home/kawakaze/AzurLaneAutoScript/module/device/connection.py:476 in reverse_server                                 │
         │                                                                                                                     │
         │    474 │   │   │   │   │   f'client can send data to {host_port[2]}:{host_port[3]}')                                │
         │    475 │   │   server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)                                           │
         │ ❱  476 │   │   server.bind(host_port[:2])                                                                           │
         │    477 │   │   server.settimeout(5)                                                                                 │
         │    478 │   │   server.listen(5)                                                                                     │
         │                                                                                                                     │
         │ ╭──────────────────────────────────────────────────── locals ─────────────────────────────────────────────────────╮ │
         │ │ host_port = ('127.0.0.1', 20036, '127.0.0.1', 7903)                                                             │ │
         │ │      self = <module.device.device.Device object at 0x7f56ac36de50>                                              │ │
         │ │    server = <socket.socket fd=21, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0,           │ │
         │ │             laddr=('0.0.0.0', 0)>                                                                               │ │
         │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
         ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
         OSError: [Errno 98] Address already in use                                                                             
INFO     11:09:59.663 │ Connecting to unknown device, using host 127.0.0.1                                                      
INFO     11:09:59.672 │ Reuse reverse: ReverseItem(remote='tcp:7903', local='tcp:20036')                                        
INFO     11:09:59.681 │ Reverse server listening on 127.0.0.1:20036, client can send data to 127.0.0.1:7903                     
ERROR    11:09:59.690 │ OSError: [Errno 98] Address already in use                                                              
         ╭───────────────────────────────────────── Traceback (most recent call last) ─────────────────────────────────────────╮
         │                                                                                                                     │
         │ /home/kawakaze/AzurLaneAutoScript/module/device/method/adb.py:32 in retry_wrapper                                   │
         │                                                                                                                     │
         │    30 │   │   │   │   │   time.sleep(retry_sleep(_))                                                                │
         │    31 │   │   │   │   │   init()                                                                                    │
         │ ❱  32 │   │   │   │   return func(self, *args, **kwargs)                                                            │
         │    33 │   │   │   # Can't handle                                                                                    │
         │    34 │   │   │   except RequestHumanTakeover:                                                                      │
         │                                                                                                                     │
         │ ╭───────────────────────────────────── locals ─────────────────────────────────────╮                                │
         │ │      _ = 2                                                                       │                                │
         │ │   args = ()                                                                      │                                │
         │ │      e = OSError(98, 'Address already in use')                                   │                                │
         │ │   func = <function Adb.screenshot_adb_nc at 0x7f566c9f3dd0>                      │                                │
         │ │   init = <function retry.<locals>.retry_wrapper.<locals>.init at 0x7f56b41faef0> │                                │
         │ │ kwargs = {}                                                                      │                                │
         │ │   self = <module.device.device.Device object at 0x7f56ac36de50>                  │                                │
         │ ╰──────────────────────────────────────────────────────────────────────────────────╯                                │
         │ /home/kawakaze/AzurLaneAutoScript/module/device/method/adb.py:176 in screenshot_adb_nc                              │
         │                                                                                                                     │
         │   174 │   @retry                                                                                                    │
         │   175 │   def screenshot_adb_nc(self):                                                                              │
         │ ❱ 176 │   │   data = self.adb_shell_nc(['screencap'])                                                               │
         │   177 │   │   if len(data) < 500:                                                                                   │
         │   178 │   │   │   logger.warning(f'Unexpected screenshot: {data}')                                                  │
         │                                                                                                                     │
         │ ╭─────────────────────────── locals ────────────────────────────╮                                                   │
         │ │ self = <module.device.device.Device object at 0x7f56ac36de50> │                                                   │
         │ ╰───────────────────────────────────────────────────────────────╯                                                   │
         │                                                                                                                     │
         │ /home/kawakaze/AzurLaneAutoScript/module/device/connection.py:535 in adb_shell_nc                                   │
         │                                                                                                                     │
         │    533 │   │   """                                                                                                  │
         │    534 │   │   # Server start listening                                                                             │
         │ ❱  535 │   │   server = self.reverse_server                                                                         │
         │    536 │   │   server.settimeout(timeout)                                                                           │
         │    537 │   │   # Client send data, waiting for server accept                                                        │
         │                                                                                                                     │
         │ ╭────────────────────────────── locals ───────────────────────────────╮                                             │
         │ │ chunk_size = 262144                                                 │                                             │
         │ │        cmd = ['screencap']                                          │                                             │
         │ │       self = <module.device.device.Device object at 0x7f56ac36de50> │                                             │
         │ │    timeout = 5                                                      │                                             │
         │ ╰─────────────────────────────────────────────────────────────────────╯                                             │
         │                                                                                                                     │
         │ /home/kawakaze/AzurLaneAutoScript/module/base/decorator.py:97 in __get__                                            │
         │                                                                                                                     │
         │    95 │   │   │   return self                                                                                       │
         │    96 │   │                                                                                                         │
         │ ❱  97 │   │   value = obj.__dict__[self.func.__name__] = self.func(obj)                                             │
         │    98 │   │   return value                                                                                          │
         │    99                                                                                                               │
         │                                                                                                                     │
         │ ╭──────────────────────────────── locals ─────────────────────────────────╮                                         │
         │ │  cls = <class 'module.device.device.Device'>                            │                                         │
         │ │  obj = <module.device.device.Device object at 0x7f56ac36de50>           │                                         │
         │ │ self = <module.base.decorator.cached_property object at 0x7f566c9f1190> │                                         │
         │ ╰─────────────────────────────────────────────────────────────────────────╯                                         │
         │                                                                                                                     │
         │ /home/kawakaze/AzurLaneAutoScript/module/device/connection.py:476 in reverse_server                                 │
         │                                                                                                                     │
         │    474 │   │   │   │   │   f'client can send data to {host_port[2]}:{host_port[3]}')                                │
         │    475 │   │   server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)                                           │
         │ ❱  476 │   │   server.bind(host_port[:2])                                                                           │
         │    477 │   │   server.settimeout(5)                                                                                 │
         │    478 │   │   server.listen(5)                                                                                     │
         │                                                                                                                     │
         │ ╭──────────────────────────────────────────────────── locals ─────────────────────────────────────────────────────╮ │
         │ │ host_port = ('127.0.0.1', 20036, '127.0.0.1', 7903)                                                             │ │
         │ │      self = <module.device.device.Device object at 0x7f56ac36de50>                                              │ │
         │ │    server = <socket.socket fd=23, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0,           │ │
         │ │             laddr=('0.0.0.0', 0)>                                                                               │ │
         │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
         ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
         OSError: [Errno 98] Address already in use                                                                             
INFO     11:10:03.058 │ Connecting to unknown device, using host 127.0.0.1                                                      
INFO     11:10:03.066 │ Reuse reverse: ReverseItem(remote='tcp:7903', local='tcp:20036')                                        
INFO     11:10:03.077 │ Reverse server listening on 127.0.0.1:20036, client can send data to 127.0.0.1:7903                     
ERROR    11:10:03.085 │ OSError: [Errno 98] Address already in use                                                              
         ╭───────────────────────────────────────── Traceback (most recent call last) ─────────────────────────────────────────╮
         │                                                                                                                     │
         │ /home/kawakaze/AzurLaneAutoScript/module/device/method/adb.py:32 in retry_wrapper                                   │
         │                                                                                                                     │
         │    30 │   │   │   │   │   time.sleep(retry_sleep(_))                                                                │
         │    31 │   │   │   │   │   init()                                                                                    │
         │ ❱  32 │   │   │   │   return func(self, *args, **kwargs)                                                            │
         │    33 │   │   │   # Can't handle                                                                                    │
         │    34 │   │   │   except RequestHumanTakeover:                                                                      │
         │                                                                                                                     │
         │ ╭───────────────────────────────────── locals ─────────────────────────────────────╮                                │
         │ │      _ = 3                                                                       │                                │
         │ │   args = ()                                                                      │                                │
         │ │      e = OSError(98, 'Address already in use')                                   │                                │
         │ │   func = <function Adb.screenshot_adb_nc at 0x7f566c9f3dd0>                      │                                │
         │ │   init = <function retry.<locals>.retry_wrapper.<locals>.init at 0x7f56ac6398c0> │                                │
         │ │ kwargs = {}                                                                      │                                │
         │ │   self = <module.device.device.Device object at 0x7f56ac36de50>                  │                                │
         │ ╰──────────────────────────────────────────────────────────────────────────────────╯                                │
         │ /home/kawakaze/AzurLaneAutoScript/module/device/method/adb.py:176 in screenshot_adb_nc                              │
         │                                                                                                                     │
         │   174 │   @retry                                                                                                    │
         │   175 │   def screenshot_adb_nc(self):                                                                              │
         │ ❱ 176 │   │   data = self.adb_shell_nc(['screencap'])                                                               │
         │   177 │   │   if len(data) < 500:                                                                                   │
         │   178 │   │   │   logger.warning(f'Unexpected screenshot: {data}')                                                  │
         │                                                                                                                     │
         │ ╭─────────────────────────── locals ────────────────────────────╮                                                   │
         │ │ self = <module.device.device.Device object at 0x7f56ac36de50> │                                                   │
         │ ╰───────────────────────────────────────────────────────────────╯                                                   │
         │                                                                                                                     │
         │ /home/kawakaze/AzurLaneAutoScript/module/device/connection.py:535 in adb_shell_nc                                   │
         │                                                                                                                     │
         │    533 │   │   """                                                                                                  │
         │    534 │   │   # Server start listening                                                                             │
         │ ❱  535 │   │   server = self.reverse_server                                                                         │
         │    536 │   │   server.settimeout(timeout)                                                                           │
         │    537 │   │   # Client send data, waiting for server accept                                                        │
         │                                                                                                                     │
         │ ╭────────────────────────────── locals ───────────────────────────────╮                                             │
         │ │ chunk_size = 262144                                                 │                                             │
         │ │        cmd = ['screencap']                                          │                                             │
         │ │       self = <module.device.device.Device object at 0x7f56ac36de50> │                                             │
         │ │    timeout = 5                                                      │                                             │
         │ ╰─────────────────────────────────────────────────────────────────────╯                                             │
         │                                                                                                                     │
         │ /home/kawakaze/AzurLaneAutoScript/module/base/decorator.py:97 in __get__                                            │
         │                                                                                                                     │
         │    95 │   │   │   return self                                                                                       │
         │    96 │   │                                                                                                         │
         │ ❱  97 │   │   value = obj.__dict__[self.func.__name__] = self.func(obj)                                             │
         │    98 │   │   return value                                                                                          │
         │    99                                                                                                               │
         │                                                                                                                     │
         │ ╭──────────────────────────────── locals ─────────────────────────────────╮                                         │
         │ │  cls = <class 'module.device.device.Device'>                            │                                         │
         │ │  obj = <module.device.device.Device object at 0x7f56ac36de50>           │                                         │
         │ │ self = <module.base.decorator.cached_property object at 0x7f566c9f1190> │                                         │
         │ ╰─────────────────────────────────────────────────────────────────────────╯                                         │
         │                                                                                                                     │
         │ /home/kawakaze/AzurLaneAutoScript/module/device/connection.py:476 in reverse_server                                 │
         │                                                                                                                     │
         │    474 │   │   │   │   │   f'client can send data to {host_port[2]}:{host_port[3]}')                                │
         │    475 │   │   server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)                                           │
         │ ❱  476 │   │   server.bind(host_port[:2])                                                                           │
         │    477 │   │   server.settimeout(5)                                                                                 │
         │    478 │   │   server.listen(5)                                                                                     │
         │                                                                                                                     │
         │ ╭──────────────────────────────────────────────────── locals ─────────────────────────────────────────────────────╮ │
         │ │ host_port = ('127.0.0.1', 20036, '127.0.0.1', 7903)                                                             │ │
         │ │      self = <module.device.device.Device object at 0x7f56ac36de50>                                              │ │
         │ │    server = <socket.socket fd=21, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0,           │ │
         │ │             laddr=('0.0.0.0', 0)>                                                                               │ │
         │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
         ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
         OSError: [Errno 98] Address already in use                                                                             
INFO     11:10:06.503 │ Connecting to unknown device, using host 127.0.0.1                                                      
INFO     11:10:06.508 │ Reuse reverse: ReverseItem(remote='tcp:7903', local='tcp:20036')                                        
INFO     11:10:06.513 │ Reverse server listening on 127.0.0.1:20036, client can send data to 127.0.0.1:7903                     
ERROR    11:10:06.517 │ OSError: [Errno 98] Address already in use                                                              
         ╭───────────────────────────────────────── Traceback (most recent call last) ─────────────────────────────────────────╮
         │                                                                                                                     │
         │ /home/kawakaze/AzurLaneAutoScript/module/device/method/adb.py:32 in retry_wrapper                                   │
         │                                                                                                                     │
         │    30 │   │   │   │   │   time.sleep(retry_sleep(_))                                                                │
         │    31 │   │   │   │   │   init()                                                                                    │
         │ ❱  32 │   │   │   │   return func(self, *args, **kwargs)                                                            │
         │    33 │   │   │   # Can't handle                                                                                    │
         │    34 │   │   │   except RequestHumanTakeover:                                                                      │
         │                                                                                                                     │
         │ ╭───────────────────────────────────── locals ─────────────────────────────────────╮                                │
         │ │      _ = 4                                                                       │                                │
         │ │   args = ()                                                                      │                                │
         │ │      e = OSError(98, 'Address already in use')                                   │                                │
         │ │   func = <function Adb.screenshot_adb_nc at 0x7f566c9f3dd0>                      │                                │
         │ │   init = <function retry.<locals>.retry_wrapper.<locals>.init at 0x7f56b41faef0> │                                │
         │ │ kwargs = {}                                                                      │                                │
         │ │   self = <module.device.device.Device object at 0x7f56ac36de50>                  │                                │
         │ ╰──────────────────────────────────────────────────────────────────────────────────╯                                │
         │ /home/kawakaze/AzurLaneAutoScript/module/device/method/adb.py:176 in screenshot_adb_nc                              │
         │                                                                                                                     │
         │   174 │   @retry                                                                                                    │
         │   175 │   def screenshot_adb_nc(self):                                                                              │
         │ ❱ 176 │   │   data = self.adb_shell_nc(['screencap'])                                                               │
         │   177 │   │   if len(data) < 500:                                                                                   │
         │   178 │   │   │   logger.warning(f'Unexpected screenshot: {data}')                                                  │
         │                                                                                                                     │
         │ ╭─────────────────────────── locals ────────────────────────────╮                                                   │
         │ │ self = <module.device.device.Device object at 0x7f56ac36de50> │                                                   │
         │ ╰───────────────────────────────────────────────────────────────╯                                                   │
         │                                                                                                                     │
         │ /home/kawakaze/AzurLaneAutoScript/module/device/connection.py:535 in adb_shell_nc                                   │
         │                                                                                                                     │
         │    533 │   │   """                                                                                                  │
         │    534 │   │   # Server start listening                                                                             │
         │ ❱  535 │   │   server = self.reverse_server                                                                         │
         │    536 │   │   server.settimeout(timeout)                                                                           │
         │    537 │   │   # Client send data, waiting for server accept                                                        │
         │                                                                                                                     │
         │ ╭────────────────────────────── locals ───────────────────────────────╮                                             │
         │ │ chunk_size = 262144                                                 │                                             │
         │ │        cmd = ['screencap']                                          │                                             │
         │ │       self = <module.device.device.Device object at 0x7f56ac36de50> │                                             │
         │ │    timeout = 5                                                      │                                             │
         │ ╰─────────────────────────────────────────────────────────────────────╯                                             │
         │                                                                                                                     │
         │ /home/kawakaze/AzurLaneAutoScript/module/base/decorator.py:97 in __get__                                            │
         │                                                                                                                     │
         │    95 │   │   │   return self                                                                                       │
         │    96 │   │                                                                                                         │
         │ ❱  97 │   │   value = obj.__dict__[self.func.__name__] = self.func(obj)                                             │
         │    98 │   │   return value                                                                                          │
         │    99                                                                                                               │
         │                                                                                                                     │
         │ ╭──────────────────────────────── locals ─────────────────────────────────╮                                         │
         │ │  cls = <class 'module.device.device.Device'>                            │                                         │
         │ │  obj = <module.device.device.Device object at 0x7f56ac36de50>           │                                         │
         │ │ self = <module.base.decorator.cached_property object at 0x7f566c9f1190> │                                         │
         │ ╰─────────────────────────────────────────────────────────────────────────╯                                         │
         │                                                                                                                     │
         │ /home/kawakaze/AzurLaneAutoScript/module/device/connection.py:476 in reverse_server                                 │
         │                                                                                                                     │
         │    474 │   │   │   │   │   f'client can send data to {host_port[2]}:{host_port[3]}')                                │
         │    475 │   │   server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)                                           │
         │ ❱  476 │   │   server.bind(host_port[:2])                                                                           │
         │    477 │   │   server.settimeout(5)                                                                                 │
         │    478 │   │   server.listen(5)                                                                                     │
         │                                                                                                                     │
         │ ╭──────────────────────────────────────────────────── locals ─────────────────────────────────────────────────────╮ │
         │ │ host_port = ('127.0.0.1', 20036, '127.0.0.1', 7903)                                                             │ │
         │ │      self = <module.device.device.Device object at 0x7f56ac36de50>                                              │ │
         │ │    server = <socket.socket fd=23, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0,           │ │
         │ │             laddr=('0.0.0.0', 0)>                                                                               │ │
         │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
         ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
         OSError: [Errno 98] Address already in use                                                                             
CRITICAL 11:10:06.890 │ Retry screenshot_adb_nc() failed                                                                        
CRITICAL 11:10:06.892 │ Request human takeover                                                                                  
INFO     11:10:07.167 │ Push notify success

截图

No response

还有别的吗?

No response

KawakazeNotFound avatar Jun 20 '25 03:06 KawakazeNotFound