| [gw4] darwin -- Python 3.12.12 /Users/cao/.pyenv/versions/3.12.12/bin/python3.12
|
| tests/services/test_service_freshness_watchdog.py:99: in test_fresh_heartbeat_skips_log_mtime
|
| results = check_once()
|
| ^^^^^^^^^^^^
|
| check_once = <function check_once at 0x12655a200>
|
| hb_side_effect = <function TestCheckOnceHeartbeatPriority.test_fresh_heartbeat_skips_log_mtime.<locals>.hb_side_effect at 0x12a168720>
|
| mock_mtime = <MagicMock name='_latest_log_mtime' id='5000082256'>
|
| mock_restart = <MagicMock name='_restart_service' id='5000076832'>
|
| self = <test_service_freshness_watchdog.TestCheckOnceHeartbeatPriority object at 0x1264b41d0>
|
| rtrader/services/service_freshness_watchdog.py:375: in check_once
|
| reason = _check_daily_summary_outcome(deadline_min)
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| age = 60.00012707710266
|
| deadline_min = 330
|
| hb_age = None
|
| hb_key = 'verdictgenprecleanup_service'
|
| hb_stale = 300
|
| is_market = False
|
| mtime = 1779851027.471118
|
| now = 1779851087.471245
|
| out = {'account-monitor': {'age': 60.00012707710266, 'source': 'log_mtime', 'status': 'ok', 'threshold': 1800.0}, 'channel-s...: 3600.0}, 'trading-plan': {'age': 60.00012707710266, 'source': 'log_mtime', 'status': 'ok', 'threshold': 1800.0}, ...}
|
| outcome_check = 'daily_summary_narrative'
|
| service = 'daily-summary'
|
| threshold = 3600
|
| thresholds = {'heartbeat_key': 'dailysummary_service', 'heartbeat_stale_seconds': 300, 'market_hours': 1800, 'off_hours': 3600, ...}
|
| rtrader/services/service_freshness_watchdog.py:305: in _check_daily_summary_outcome
|
| keys = list(r.scan_iter(match=pattern, count=20))
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| close_dt = datetime.datetime(2026, 5, 26, 16, 0, tzinfo=<DstTzInfo 'America/New_York' EDT-1 day, 20:00:00 DST>)
|
| deadline_minutes_after_close = 330
|
| deadline_with_buffer = 1779845400.0
|
| now_et = datetime.datetime(2026, 5, 26, 23, 4, 47, 471355, tzinfo=<DstTzInfo 'America/New_York' EDT-1 day, 20:00:00 DST>)
|
| pattern = 'daily_summary:last_narrative_posted:2026-05-26:*'
|
| r = <redis.client.Redis(<redis.connection.ConnectionPool(<redis.connection.Connection(db=0,username=None,password=YE3BNISC...protocol=2,host=testbox001,port=6379,socket_connect_timeout=5,socket_keepalive=True,socket_keepalive_options=None)>)>)>
|
| redis_testbox001 = <function redis_testbox001 at 0x10fe7fec0>
|
| today = datetime.date(2026, 5, 26)
|
| ../.pyenv/versions/3.12.12/lib/python3.12/site-packages/redis/commands/core.py:3228: in scan_iter
|
| cursor, data = self.scan(
|
| _type = None
|
| count = 20
|
| cursor = 15152
|
| data = []
|
| kwargs = {}
|
| match = 'daily_summary:last_narrative_posted:2026-05-26:*'
|
| self = <redis.client.Redis(<redis.connection.ConnectionPool(<redis.connection.Connection(db=0,username=None,password=YE3BNISC...protocol=2,host=testbox001,port=6379,socket_connect_timeout=5,socket_keepalive=True,socket_keepalive_options=None)>)>)>
|
| ../.pyenv/versions/3.12.12/lib/python3.12/site-packages/redis/commands/core.py:3203: in scan
|
| return self.execute_command("SCAN", *pieces, **kwargs)
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| _type = None
|
| count = 20
|
| cursor = 15152
|
| kwargs = {}
|
| match = 'daily_summary:last_narrative_posted:2026-05-26:*'
|
| pieces = [15152, b'MATCH', 'daily_summary:last_narrative_posted:2026-05-26:*', b'COUNT', 20]
|
| self = <redis.client.Redis(<redis.connection.ConnectionPool(<redis.connection.Connection(db=0,username=None,password=YE3BNISC...protocol=2,host=testbox001,port=6379,socket_connect_timeout=5,socket_keepalive=True,socket_keepalive_options=None)>)>)>
|
| ../.pyenv/versions/3.12.12/lib/python3.12/site-packages/redis/client.py:657: in execute_command
|
| return self._execute_command(*args, **options)
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| args = ('SCAN', 15152, b'MATCH', 'daily_summary:last_narrative_posted:2026-05-26:*', b'COUNT', 20)
|
| options = {}
|
| self = <redis.client.Redis(<redis.connection.ConnectionPool(<redis.connection.Connection(db=0,username=None,password=YE3BNISC...protocol=2,host=testbox001,port=6379,socket_connect_timeout=5,socket_keepalive=True,socket_keepalive_options=None)>)>)>
|
| ../.pyenv/versions/3.12.12/lib/python3.12/site-packages/redis/client.py:668: in _execute_command
|
| return conn.retry.call_with_retry(
|
| args = ('SCAN', 15152, b'MATCH', 'daily_summary:last_narrative_posted:2026-05-26:*', b'COUNT', 20)
|
| command_name = 'SCAN'
|
| conn = <redis.connection.Connection(host=testbox001,port=6379,db=0)>
|
| options = {}
|
| pool = <redis.connection.ConnectionPool(<redis.connection.Connection(db=0,username=None,password=YE3BNISCW7,socket_timeout=No...e,protocol=2,host=testbox001,port=6379,socket_connect_timeout=5,socket_keepalive=True,socket_keepalive_options=None)>)>
|
| self = <redis.client.Redis(<redis.connection.ConnectionPool(<redis.connection.Connection(db=0,username=None,password=YE3BNISC...protocol=2,host=testbox001,port=6379,socket_connect_timeout=5,socket_keepalive=True,socket_keepalive_options=None)>)>)>
|
| ../.pyenv/versions/3.12.12/lib/python3.12/site-packages/redis/retry.py:116: in call_with_retry
|
| return do()
|
| ^^^^
|
| do = <function Redis._execute_command.<locals>.<lambda> at 0x1299e6160>
|
| fail = <function Redis._execute_command.<locals>.<lambda> at 0x12a169080>
|
| failures = 0
|
| is_retryable = None
|
| self = <redis.retry.Retry object at 0x12674d280>
|
| ../.pyenv/versions/3.12.12/lib/python3.12/site-packages/redis/client.py:669: in <lambda>
|
| lambda: self._send_command_parse_response(
|
| args = ('SCAN', 15152, b'MATCH', 'daily_summary:last_narrative_posted:2026-05-26:*', b'COUNT', 20)
|
| command_name = 'SCAN'
|
| conn = <redis.connection.Connection(host=testbox001,port=6379,db=0)>
|
| options = {}
|
| self = <redis.client.Redis(<redis.connection.ConnectionPool(<redis.connection.Connection(db=0,username=None,password=YE3BNISC...protocol=2,host=testbox001,port=6379,socket_connect_timeout=5,socket_keepalive=True,socket_keepalive_options=None)>)>)>
|
| ../.pyenv/versions/3.12.12/lib/python3.12/site-packages/redis/client.py:640: in _send_command_parse_response
|
| return self.parse_response(conn, command_name, **options)
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| args = ('SCAN', 15152, b'MATCH', 'daily_summary:last_narrative_posted:2026-05-26:*', b'COUNT', 20)
|
| command_name = 'SCAN'
|
| conn = <redis.connection.Connection(host=testbox001,port=6379,db=0)>
|
| options = {}
|
| self = <redis.client.Redis(<redis.connection.ConnectionPool(<redis.connection.Connection(db=0,username=None,password=YE3BNISC...protocol=2,host=testbox001,port=6379,socket_connect_timeout=5,socket_keepalive=True,socket_keepalive_options=None)>)>)>
|
| ../.pyenv/versions/3.12.12/lib/python3.12/site-packages/redis/client.py:691: in parse_response
|
| response = connection.read_response()
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| command_name = 'SCAN'
|
| connection = <redis.connection.Connection(host=testbox001,port=6379,db=0)>
|
| options = {}
|
| self = <redis.client.Redis(<redis.connection.ConnectionPool(<redis.connection.Connection(db=0,username=None,password=YE3BNISC...protocol=2,host=testbox001,port=6379,socket_connect_timeout=5,socket_keepalive=True,socket_keepalive_options=None)>)>)>
|
| ../.pyenv/versions/3.12.12/lib/python3.12/site-packages/redis/connection.py:1133: in read_response
|
| response = self._parser.read_response(disable_decoding=disable_decoding)
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| disable_decoding = False
|
| disconnect_on_error = True
|
| host_error = 'testbox001:6379'
|
| push_request = False
|
| self = <redis.connection.Connection(host=testbox001,port=6379,db=0)>
|
| ../.pyenv/versions/3.12.12/lib/python3.12/site-packages/redis/_parsers/resp2.py:15: in read_response
|
| result = self._read_response(disable_decoding=disable_decoding)
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| disable_decoding = False
|
| pos = 0
|
| self = <redis._parsers.resp2._RESP2Parser object at 0x1264866c0>
|
| ../.pyenv/versions/3.12.12/lib/python3.12/site-packages/redis/_parsers/resp2.py:25: in _read_response
|
| raw = self._buffer.readline()
|
| ^^^^^^^^^^^^^^^^^^^^^^^
|
| disable_decoding = False
|
| self = <redis._parsers.resp2._RESP2Parser object at 0x1264866c0>
|
| ../.pyenv/versions/3.12.12/lib/python3.12/site-packages/redis/_parsers/socket.py:115: in readline
|
| self._read_from_socket()
|
| buf = <_io.BytesIO object at 0x12727ddf0>
|
| data = b''
|
| self = <redis._parsers.socket.SocketBuffer object at 0x12729ba10>
|
| ../.pyenv/versions/3.12.12/lib/python3.12/site-packages/redis/_parsers/socket.py:65: in _read_from_socket
|
| data = self._sock.recv(socket_read_size)
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| E Failed: Timeout (>60.0s) from pytest-timeout.
|
| buf = <_io.BytesIO object at 0x12727ddf0>
|
| current_pos = 0
|
| custom_timeout = False
|
| length = None
|
| marker = 0
|
| raise_on_timeout = True
|
| self = <redis._parsers.socket.SocketBuffer object at 0x12729ba10>
|
| sock = <socket.socket [closed] fd=-1, family=2, type=1, proto=6>
|
| socket_read_size = 65536
|
| timeout = <object object at 0x10f154df0>
|