Clean up `TooFastEdit` remnants and ws-token flow

Drop all commented-out `TooFastEdit` class,
`reg_err_types`, and `isinstance()` references.
Replace the hard ws-token `assert` in
`subscribe()` with a soft mismatch log that
updates the local `token` ref; cache the result
as `latest_token` for use in sub msgs.

Also,
- Comment out the `reg_err_types` import.
- Switch `pformat` -> `ppfmt` in `openOrders` update log.

(this commit msg was generated in some part by [`claude-code`][claude-code-gh])
[claude-code-gh]: https://github.com/anthropics/claude-code
kraken_stale_ws_token
Gud Boi 2026-04-16 13:27:06 -04:00
parent 170c95da28
commit 8299c65818
1 changed files with 16 additions and 21 deletions

View File

@ -38,7 +38,7 @@ from bidict import bidict
import trio
import tractor
from tractor.devx.pformat import ppfmt
from tractor._exceptions import reg_err_types
# from tractor._exceptions import reg_err_types
from piker.accounting import (
Position,
@ -97,13 +97,6 @@ MsgUnion = Union[
]
# class TooFastEdit(Exception):
# 'Edit requests faster then api submissions'
# reg_err_types([TooFastEdit])
# TODO: make this wrap the `api.Client` and `ws` instances
# and give it methods to submit cancel vs. add vs. edit
# requests?
@ -166,7 +159,6 @@ async def handle_order_requests(
# triggered-submitted and then we have inavlid
# value in `reqids2txids` sent over ws.send()??
log.error('TOO FAST CANCEL/EDIT')
# reqids2txids[reqid] = TooFastEdit(reqid)
toofastedit.add(reqid)
reqids2txids[reqid] = reqid
await ems_order_stream.send(
@ -206,7 +198,6 @@ async def handle_order_requests(
# XXX: not sure if this block ever gets hit now?
log.error('TOO FAST EDIT')
# reqids2txids[reqid] = TooFastEdit(reqid)
reqids2txids[reqid] = reqid
toofastedit.add(reqid)
await tractor.pause()
@ -338,11 +329,19 @@ async def subscribe(
'''
# more specific logic for this in kraken's sync client:
# https://github.com/krakenfx/kraken-wsclient-py/blob/master/kraken_wsclient_py/kraken_wsclient_py.py#L188
assert (
latest_token: str = await client.get_ws_token()
if (
token
and
token == await client.get_ws_token()
)
!=
latest_token
):
log.info(
f'RE-subscribing to WS connection..\n'
f'orig-token: {token!r}\n'
f'latest-token: {latest_token!r}\n'
)
token = latest_token
subnames: set[str] = set()
for name, sub_opts in subs:
@ -350,7 +349,8 @@ async def subscribe(
'event': 'subscribe',
'subscription': {
'name': name,
'token': await client.get_ws_token(),
# 'token': await client.get_ws_token(),
'token': latest_token,
**sub_opts,
}
}
@ -868,7 +868,7 @@ async def handle_order_updates(
for order_msg in order_msgs:
log.info(
f'`openOrders` msg update_{seq}:\n'
f'{pformat(order_msg)}'
f'{ppfmt(order_msg)}'
)
txid, update_msg = list(order_msg.items())[0]
@ -1040,10 +1040,6 @@ async def handle_order_updates(
status == 'open'
and
reqid in toofastedit
# isinstance(
# reqids2txids.get(reqid),
# TooFastEdit
# )
):
# TODO: don't even allow this case
# by not moving the client side line
@ -1207,7 +1203,6 @@ async def handle_order_updates(
# we throttle too-fast-requests on the ems side
and
reqid in toofastedit
# not isinstance(txid, TooFastEdit)
):
# client was editting too quickly
# so we instead cancel this order