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-codekraken_stale_ws_token
parent
170c95da28
commit
8299c65818
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue