/ Exchanges / src / feed.py
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)