feed.py
1 from cryptofeed import FeedHandler 2 from cryptofeed.defines import CANDLES 3 from cryptofeed.exchanges import KuCoin 4 from time import sleep 5 from multiprocessing.managers import SyncManager 6 from multiprocessing import Process 7 from datetime import datetime as dt 8 # import sys 9 # sys.stderr = open('/dev/null', 'w') 10 11 mg = SyncManager() 12 mg.start() 13 DATA = mg.dict() 14 START = dt.now() 15 TIMEOUT = 0 16 17 F = FeedHandler() 18 19 20 async def ohlcv(data, ts): 21 global START 22 DATA[ts] = data 23 exit() 24 25 def cf(symbols, timeframe): 26 print("Fetching timeframe: ", timeframe, " for: ", len(symbols), " pairs.") 27 fe = KuCoin( 28 symbols=symbols, 29 channels=[CANDLES], 30 callbacks={CANDLES: ohlcv}, 31 candle_interval=timeframe, 32 ) 33 F.add_feed(fe) 34 35 F.run() 36 37 def run(timeout=3, timeframe="1h", symbols=[]): 38 global TIMEOUT; TIMEOUT = timeout 39 p = Process(target=cf, kwargs={"symbols": symbols, "timeframe": timeframe}) 40 p.start() 41 p.join() 42 return dict(DATA)