Commit Graph

405 Commits (d1b76a50e929616451a8673be33d3528e8063711)

Author SHA1 Message Date
Tyler Goodlet c23982393d Allow recording data feeds to disk
Add a couple functions for storing and retrieving live json data feed
recordings to disk using a very rudimentary character + newline delimited
format.

Also, split out the pub-sub logic from `stream_quotes()` into a new
func, `fan_out_to_chans()`. Eventually I want to formalize this pattern
into a decorator exposed through `tractor`.
2018-11-22 15:56:02 -05:00
Tyler Goodlet f038fdd42f Add a `contracts()` query
Makes it easy to request all the option contracts for a particular symbol.
Also, let `option_chain()` accept a `date` arg which can be used to only
retrieve quotes for a single expiry date (much faster then getting all
of them).
2018-11-22 15:53:00 -05:00
Tyler Goodlet 7b2ab504f9 Adjust tests to match 2018-11-22 09:44:47 -05:00
Tyler Goodlet 247bcb48c0 Tweak options query API method names 2018-11-22 09:19:04 -05:00
Tyler Goodlet 8fe0c40dde Move data feed machinery to separate module 2018-11-14 22:58:12 -05:00
Tyler Goodlet 31c69a5fae Allow specifying number of displayed digits 2018-11-13 18:42:34 -05:00
Tyler Goodlet 0c3bfb9e9e Stack the mktcap + volumes 2018-11-13 18:41:58 -05:00
Tyler Goodlet 6a66b056c8 Compact the look a bit 2018-11-13 18:41:40 -05:00
Tyler Goodlet 5961e458cf Add a option quote latency test 2018-11-13 14:59:49 -05:00
Tyler Goodlet 19ea7bd7aa Add option-chain cmd 2018-11-13 12:58:05 -05:00
Tyler Goodlet 36cf68dc0f Update tests to match 2018-11-13 12:57:46 -05:00
Tyler Goodlet d145a5a219 Rejig option chain schema to capture all contracts 2018-11-13 12:57:21 -05:00
Tyler Goodlet 368f21d8d6 Update Pipfiles 2018-11-12 00:30:55 -05:00
Tyler Goodlet f8d619b183 Go GPLv3 2018-11-12 00:29:43 -05:00
Tyler Goodlet 94012b05c3 Screw it; go 3.7 for ``datetime.fromisoformat()`` 2018-11-11 23:12:13 -05:00
Tyler Goodlet ab8008ad61 Repair quote streaming test 2018-11-11 21:59:41 -05:00
Tyler Goodlet 773457ac91 Drop stale import 2018-11-11 21:45:51 -05:00
Tyler Goodlet 2b1818ba33 Drop old stream test, rename stock quote func 2018-11-11 21:45:11 -05:00
Tyler Goodlet c8cb5a2fdc Remove duplicate fixture (now in conftest) 2018-11-11 21:07:34 -05:00
Tyler Goodlet 21eb68148c Add option contract and chain quote test 2018-11-11 21:06:46 -05:00
Tyler Goodlet a5afa0f1c3 Fix typo 2018-11-11 21:06:25 -05:00
Tyler Goodlet 6bef365fd4 Add conftest 2018-11-11 21:05:44 -05:00
Tyler Goodlet f9d9d7c1ba Add option chain quote support! 2018-11-11 21:05:30 -05:00
Tyler Goodlet 666228d82e Add initial QT stock quoting tests 2018-11-11 18:53:45 -05:00
Tyler Goodlet 82c8fca983 Use tractor.run_daemon() for pikerd 2018-10-18 13:49:20 -04:00
Tyler Goodlet e108bc4521 Must pass a main async func to tractor 2018-09-05 18:31:10 -04:00
Tyler Goodlet 2349de8314 Rename watchlist app to 'monitor' 2018-08-23 23:12:39 -04:00
goodboy 73b153b6fd
Merge pull request #55 from pikers/mktcap_sorting
Fix mktcap sorting
2018-08-23 11:31:43 -04:00
Tyler Goodlet 421cc4731f Face palm - fix mktcap sorting
Yuh think maybe the default "null" value shouldn't be a string...?

Fixes #46
2018-08-22 23:02:08 -04:00
Tyler Goodlet b2acfdaf42 Fix `pairs` type annotation 2018-08-22 23:01:34 -04:00
Tyler Goodlet 96b17e16ac Handle stale token case on network outage reconnect 2018-08-22 23:01:14 -04:00
goodboy e9921949af
Merge pull request #54 from pikers/tractor_updates
Tractor updates
2018-08-10 11:09:31 -04:00
Tyler Goodlet cbc1052bfe Update tests for new tractor api 2018-08-09 22:43:50 -04:00
Tyler Goodlet 957f1f4b02 Update pipfiles 2018-08-09 22:11:00 -04:00
Tyler Goodlet f3ac5e3c5f Port to latest tractor api 2018-08-09 21:54:02 -04:00
goodboy 6dbd919914
Merge pull request #51 from pikers/decouple_tractor
Decouple tractor
2018-07-20 13:25:31 -04:00
Tyler Goodlet e0a127e8eb Update pipfiles; point to tractor on GH 2018-07-18 14:34:26 -04:00
Tyler Goodlet da0495816b Drop tractor unit tests 2018-07-06 17:27:42 -04:00
Tyler Goodlet 3efc7a4f77 Pass through loglevel to tractor 2018-07-06 17:26:45 -04:00
Tyler Goodlet 4427e2869c Cancel symbol unsub if brokerd is already down 2018-07-06 17:26:24 -04:00
Tyler Goodlet 6c977cfb7b Port broker core to tractor; fix chan unsub bug 2018-07-06 17:25:40 -04:00
Tyler Goodlet 31b8277f08 Drop tractor modules 2018-07-06 17:19:25 -04:00
goodboy 6ff871ff7d
Merge pull request #50 from pikers/tractor_draft
Introducing "tractor"
2018-07-05 15:52:53 -04:00
Tyler Goodlet 94e7083bfc `tractor.run()` is required for testing now 2018-07-05 15:33:02 -04:00
Tyler Goodlet f4a91a4975 Always do symbol unsubscribe on teardown 2018-07-05 15:31:52 -04:00
Tyler Goodlet 73eedfd7b3 Set tractor actor name at startup 2018-07-05 15:31:21 -04:00
Tyler Goodlet aa259433f5 Don't bother unsetting the squeue; let errors propogate up 2018-07-05 15:30:31 -04:00
Tyler Goodlet 0ac564dbf3 Only cancel channel spawned rpc tasks when explicitly notified 2018-07-05 15:27:02 -04:00
Tyler Goodlet e395845ddb Every ticker-chan subscription must include a caller id 2018-07-05 15:23:38 -04:00
Tyler Goodlet 5383dd6446 Add a working arbiter registry system
Every actor now registers (and unregisters) with the arbiter at
startup/teardown. For now the registry is stored in a plain `dict` in
the arbiter's memory. This makes it possible to easily coordinate actors
started as plain Python processes or via `multiprocessing`.

A whole smörgåsbord of changes was required to accomplish this:
- factor handshake steps into a func
- track *every* channel connected to an actor including multiples to the
  same remote peer (may want to optimize this later)
- handle `trio.ClosedStreamError` gracefully in the message loop
- add an `open_portal` asynccontextmanager which handles channel
  creation, handshaking, and spawning a bg task for msg processing
- add a `start_actor()` for starting in-process actors directly
- add working `get_arbiter()` and `find_actor()` public routines
- `_main` now tries an anonymous channel connect to the stated
  arbiter sockaddr and uses that to determine whether to crown itself
2018-07-04 14:34:25 -04:00