mirror of
https://github.com/wassname/catalyst.git
synced 2026-07-01 16:17:02 +08:00
70 lines
2.1 KiB
Python
70 lines
2.1 KiB
Python
import zmq
|
|
import logging
|
|
import tornado
|
|
from data.sources.equity import *
|
|
from data.feed import *
|
|
from data.transforms import Merge, MovingAverage
|
|
|
|
from qbt_server import connect_db
|
|
from qbt_client import TestClient
|
|
|
|
def datafeed():
|
|
connection, db = connect_db()
|
|
logger = logging.getLogger()
|
|
feed = DataFeed(db, 1) #one moving average, one client
|
|
feed_proc = multiprocessing.Process(target=feed.run)
|
|
feed_proc.start()
|
|
|
|
config = {}
|
|
config['name'] = '**merged feed**'
|
|
config['transforms'] = [{'name':'mavg1', 'class':'MovingAverage', 'hours':1},{'name':'mavg2', 'class':'MovingAverage', 'hours':2}]
|
|
|
|
result_address = "tcp://127.0.0.1:20202"
|
|
|
|
mavg = MovingAverage(feed.feed_address, result_address, feed.sync_address, config['transforms'][0])
|
|
mavg.run()
|
|
#mavg_proc = multiprocessing.Process(target=mavg.run())
|
|
#mavg_proc.start()
|
|
|
|
#merger = Merge(feed.feed_address, result_address, feed.sync_address, config)
|
|
#merger_proc = multiprocessing.Process(target=merger.run)
|
|
#merger_proc.start()
|
|
|
|
#client = TestClient(feed.feed_address, feed.sync_address)
|
|
#client.run()
|
|
|
|
logger.info("feed has {pending} messages".format(pending=feed.pending_messages()))
|
|
assert(feed.pending_messages() == 0)
|
|
|
|
def pubsub():
|
|
proc1 = multiprocessing.Process(target=sub)
|
|
proc2 = multiprocessing.Process(target=pub)
|
|
proc1.start()
|
|
proc2.start()
|
|
|
|
def sub():
|
|
context = zmq.Context()
|
|
controller = context.socket(zmq.PULL)
|
|
controller.connect("tcp://127.0.0.1:10099")
|
|
#controller.setsockopt(zmq.SUBSCRIBE, '')
|
|
while True:
|
|
try:
|
|
message = controller.recv()
|
|
print message
|
|
except zmq.ZMQError as err:
|
|
if err.errno != zmq.EAGAIN:
|
|
raise err
|
|
|
|
def pub():
|
|
context = zmq.Context()
|
|
controller = context.socket(zmq.PUSH)
|
|
controller.bind("tcp://127.0.0.1:10099")
|
|
while True:
|
|
controller.send("HELLO3")
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
tornado.options.parse_command_line()
|
|
datafeed()
|
|
|