-
Notifications
You must be signed in to change notification settings - Fork 17
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Agg feedz #414
Commits on Jan 10, 2023
-
Configuration menu - View commit details
-
Copy full SHA for 4000034 - Browse repository at this point
Copy the full SHA 4000034View commit details -
Configuration menu - View commit details
-
Copy full SHA for 508de61 - Browse repository at this point
Copy the full SHA 508de61View commit details -
Configuration menu - View commit details
-
Copy full SHA for 344a634 - Browse repository at this point
Copy the full SHA 344a634View commit details -
Make all UI entrypoints accept an fqsn
list
This is to prep for multi-symbol feeds and charts so we accept a sequence of fqsns to the top level entrypoints as well as the `.data.feed.open_feed()` API (though we're not actually supporting true multiplexed feeds nor shm lookups per fqsn yet).
Configuration menu - View commit details
-
Copy full SHA for 2a9042b - Browse repository at this point
Copy the full SHA 2a9042bView commit details -
Configuration menu - View commit details
-
Copy full SHA for 8e85ed9 - Browse repository at this point
Copy the full SHA 8e85ed9View commit details -
Configuration menu - View commit details
-
Copy full SHA for 051a872 - Browse repository at this point
Copy the full SHA 051a872View commit details -
Configuration menu - View commit details
-
Copy full SHA for 1bf1965 - Browse repository at this point
Copy the full SHA 1bf1965View commit details -
Start data feed layer test suite
Initial test that starts a `binance` feed and reads the quote messages alongside shm buffers for 1s and 1m OHLC; just prints to console for now. Template out parametrization for multi-symbol quote-multiplexed feeds which coming soon B)
Configuration menu - View commit details
-
Copy full SHA for c7d5db5 - Browse repository at this point
Copy the full SHA c7d5db5View commit details -
Configuration menu - View commit details
-
Copy full SHA for 5bf3cb8 - Browse repository at this point
Copy the full SHA 5bf3cb8View commit details -
First draft aggregate feedz support
Orient shm-flow-arrays around the new idea of a `Flume` which provides access, mgmt and basic measure of real-time data flow sets (see water flow management semantics). - We discard the previous idea of a "init message" which contained all the shm attachment info and instead send a startup message full of `Flume.to_msg()`s which are symmetrically loaded on the caller actor side. - Create data-flows "entries" for every passed in fqsn such that the consumer gets back streams and shm for each, now all wrapped in `Flume` types. For now we allocate `brokermod.stream_quotes()` tasks 1-to-1 for each fqsn (instead of expecting each backend to do multi-plexing, though we might want that eventually) as well a `_FeedsBus._subscriber` entry for each. The pause/resume management loop is adjusted to match. Previously `Feed`s were allocated 1-to-1 with each fqsn. - Make `Feed` a `Struct` subtype instead of a `@dataclass` and move all flow specific attrs to the new `Flume`: - move `.index_stream()`, `.get_ds_info()` to `Flume`. - drop `.receive()`: each fqsn entry will now require knowledge of separate streams by feed users. - add multi-fqsn tables: `.flumes`, `.streams` which point to the appropriate per-symbol entries. - Async load all `Flume`s from all contexts and all quote streams using `tractor.trionics.gather_contexts()` on the client `open_feed()` side. - Update feeds test to include streaming 2 symbols on the same (binance) backend.
Configuration menu - View commit details
-
Copy full SHA for 18dc8b0 - Browse repository at this point
Copy the full SHA 18dc8b0View commit details -
Configuration menu - View commit details
-
Copy full SHA for e7de540 - Browse repository at this point
Copy the full SHA e7de540View commit details -
Configuration menu - View commit details
-
Copy full SHA for 32b36aa - Browse repository at this point
Copy the full SHA 32b36aaView commit details -
Configuration menu - View commit details
-
Copy full SHA for 25bfe6f - Browse repository at this point
Copy the full SHA 25bfe6fView commit details -
Further feed syncing fixes wrt to
Flumes
Sync per-symbol sampler loop start to subscription registers such that the loop can't start until the consumer's stream subscription is added; the task-sync uses a `trio.Event`. This patch also drops a ton of commented cruft. Further adjustments needed to get parity with prior functionality: - pass init msg 'symbol_info' field to the `Symbol.broker_info: dict`. - ensure the `_FeedsBus._subscriptions` table uses the broker specific (without brokername suffix) as keys for lookup so that the sampler loop doesn't have to append in the brokername as a suffix. - ensure the `open_feed_bus()` flumes-table-msg returned sent by `tractor.Context.started()` uses the `.to_msg()` form of all flume structs. - ensure `maybe_open_feed()` uses `tractor.MsgStream.subscribe()` on all `Flume.stream`s on cache hits using the `tractor.trionics.gather_contexts()` helper.
Configuration menu - View commit details
-
Copy full SHA for bb6452b - Browse repository at this point
Copy the full SHA bb6452bView commit details -
Configuration menu - View commit details
-
Copy full SHA for 7daab63 - Browse repository at this point
Copy the full SHA 7daab63View commit details -
Configuration menu - View commit details
-
Copy full SHA for 2c4daf0 - Browse repository at this point
Copy the full SHA 2c4daf0View commit details -
Configuration menu - View commit details
-
Copy full SHA for 8a01c9e - Browse repository at this point
Copy the full SHA 8a01c9eView commit details -
Configuration menu - View commit details
-
Copy full SHA for 29b6b3e - Browse repository at this point
Copy the full SHA 29b6b3eView commit details -
Configuration menu - View commit details
-
Copy full SHA for 36868bb - Browse repository at this point
Copy the full SHA 36868bbView commit details -
Fix partial-frame-missing backfill logic
This had a bug prior where the end of a frame (a partial) wasn't being sliced correctly and we'd get odd gaps showing up in the backfilled from `brokerd` vs. tsdb end index. Repair this by doing timeframe aware index diffing in `diff_history()` which seems to resolve it. Also, use the frame-result's `end_dt: datetime` for the loop exit condition.
Configuration menu - View commit details
-
Copy full SHA for 8476d8d - Browse repository at this point
Copy the full SHA 8476d8dView commit details -
Configuration menu - View commit details
-
Copy full SHA for d6fb6fe - Browse repository at this point
Copy the full SHA d6fb6feView commit details -
Finally fix tsdb -> shm backfill loading
A slight facepalm but, the main issue was a simple indexing logic error: we need to slice with `tsdb_history[-shm._first.value:]` to push most recent history not oldest.. This allows cleanup of tsdb backfill loop as well. Further, greatly simply `diff_history()` time slicing by using the classic `numpy` conditional slice on the epoch field.
Configuration menu - View commit details
-
Copy full SHA for 81516c5 - Browse repository at this point
Copy the full SHA 81516c5View commit details -
Configuration menu - View commit details
-
Copy full SHA for 20a3962 - Browse repository at this point
Copy the full SHA 20a3962View commit details -
Multi-
broker
quotes withFeed.open_multi_stream()
Adds provider-list-filtered (quote) stream multiplexing support allowing for merged real-time `tractor.MsgStream`s using an `@acm` interface. Behind the scenes we are just doing a classic multi-task push to common mem chan approach. Details to make it work on `Feed`: - add `Feed.mods: dict[str, Moduletype]` and `Feed.portals[ModuleType, tractor.Portal]` which are both populated during init in `open_feed()` - drop `Feed.portal` and `Feed.name` Also fix a final lingering tsdb history loading loop termination bug.
Configuration menu - View commit details
-
Copy full SHA for 7b9db86 - Browse repository at this point
Copy the full SHA 7b9db86View commit details -
Configuration menu - View commit details
-
Copy full SHA for 7bbe86d - Browse repository at this point
Copy the full SHA 7bbe86dView commit details -
Configuration menu - View commit details
-
Copy full SHA for e348968 - Browse repository at this point
Copy the full SHA e348968View commit details -
Configuration menu - View commit details
-
Copy full SHA for 0a959c1 - Browse repository at this point
Copy the full SHA 0a959c1View commit details -
Configuration menu - View commit details
-
Copy full SHA for ddbba76 - Browse repository at this point
Copy the full SHA ddbba76View commit details -
Configuration menu - View commit details
-
Copy full SHA for 79fcbcc - Browse repository at this point
Copy the full SHA 79fcbccView commit details -
Configuration menu - View commit details
-
Copy full SHA for c088963 - Browse repository at this point
Copy the full SHA c088963View commit details -
Configuration menu - View commit details
-
Copy full SHA for 1e96ca3 - Browse repository at this point
Copy the full SHA 1e96ca3View commit details -
Ensure correct stream is set on each
Flume
Set each quote-stream by matching the provider for each `Flume` and thus results in some flumes mapping to the same (multiplexed) stream. Monkey-patch the equivalent `tractor.MsgStream._ctx: tractor.Context` on each broadcast-receiver subscription to allow use by feed bus methods as well as other internals which need to reference IPC channel/portal info. Start a `_FeedsBus` subscription management API: - add `.get_subs()` which returns the list of tuples registered for the given key (normally the fqsn). - add `.remove_sub()` which allows removing by key and tuple value and provides encapsulation for sampler task(s) which deal with dropped connections/subscribers.
Configuration menu - View commit details
-
Copy full SHA for f5cd63a - Browse repository at this point
Copy the full SHA f5cd63aView commit details -
Catch overruns on throttled feed subs too
Previously we would only detect overruns and drop subscriptions on non-throttled feed subs, however you can get the same issue with a wrapping throttler task: - the intermediate mem chan can be blocked either by the throttler task being too slow, in which case we still want to warn about it - the stream's IPC channel actually breaks and we still want to drop the connection and subscription so it doesn't be come a source of stale backpressure.
Configuration menu - View commit details
-
Copy full SHA for 326f153 - Browse repository at this point
Copy the full SHA 326f153View commit details -
Configuration menu - View commit details
-
Copy full SHA for 88870fd - Browse repository at this point
Copy the full SHA 88870fdView commit details -
Rework
_FeedsBus
subscriptions mgmt usingset
Allows using `set` ops for subscription management and guarantees no duplicates per `brokerd` actor. New API is simpler for dynamic pause/resume changes per `Feed`: - `_FeedsBus.add_subs()`, `.get_subs()`, `.remove_subs()` all accept multi-sub `set` inputs. - `Feed.pause()` / `.resume()` encapsulates management of *only* sending a msg on each unique underlying IPC msg stream. Use new api in sampler task.
Configuration menu - View commit details
-
Copy full SHA for 2a158ae - Browse repository at this point
Copy the full SHA 2a158aeView commit details -
Configuration menu - View commit details
-
Copy full SHA for 967e28b - Browse repository at this point
Copy the full SHA 967e28bView commit details -
Revert "Fix
_main()
arg back tosym: str
"This reverts commit 02fbc0a.
Configuration menu - View commit details
-
Copy full SHA for c944db5 - Browse repository at this point
Copy the full SHA c944db5View commit details -
Only require
-b <brokername>
for filteringInstead of requiring any `-b` try to import all built-in broker backend python modules by default and only load those detected from the input symbol list's fqsn values. In other words the `piker chart` cmd can be run sin `-b` now and that flag is only required if you only want to load a subset of the built-ins or are trying to load a specific not-yet-builtin backend.
Configuration menu - View commit details
-
Copy full SHA for 28fd795 - Browse repository at this point
Copy the full SHA 28fd795View commit details -
Configuration menu - View commit details
-
Copy full SHA for 5d021ff - Browse repository at this point
Copy the full SHA 5d021ffView commit details -
Configuration menu - View commit details
-
Copy full SHA for b7e1443 - Browse repository at this point
Copy the full SHA b7e1443View commit details -
Configuration menu - View commit details
-
Copy full SHA for f232d6d - Browse repository at this point
Copy the full SHA f232d6dView commit details -
Always force lowercase on
binance
symbol keysHopefully helps resolve #435
Configuration menu - View commit details
-
Copy full SHA for 76f920a - Browse repository at this point
Copy the full SHA 76f920aView commit details -
binance
: always request an extra 1min OHLC barSeems that by default their history indexing rounds down/back to the previous time step, so make sure we add a minute inside `Client.bars()` when the `end_dt=None`, indicating "get the latest bar". Add a breakpoint block that should trigger whenever the latest bar vs. the latest epoch time is mismatched; we'll remove this after some testing verifying the history bars issue is resolved. Further this drops the legacy `backfill_bars()` endpoint which has been deprecated and unused for a while.
Configuration menu - View commit details
-
Copy full SHA for f6b7057 - Browse repository at this point
Copy the full SHA f6b7057View commit details -
Configuration menu - View commit details
-
Copy full SHA for 81585d9 - Browse repository at this point
Copy the full SHA 81585d9View commit details -
Configuration menu - View commit details
-
Copy full SHA for 008ae47 - Browse repository at this point
Copy the full SHA 008ae47View commit details -
Configuration menu - View commit details
-
Copy full SHA for 0662210 - Browse repository at this point
Copy the full SHA 0662210View commit details -
Configuration menu - View commit details
-
Copy full SHA for 593db0e - Browse repository at this point
Copy the full SHA 593db0eView commit details -
Configuration menu - View commit details
-
Copy full SHA for 55de9ab - Browse repository at this point
Copy the full SHA 55de9abView commit details -
Configuration menu - View commit details
-
Copy full SHA for 963e5bd - Browse repository at this point
Copy the full SHA 963e5bdView commit details