def kite_ticker_handler(manager, msg): global kws, kite, kite_api_key, access_token pdebug('kite_ticker_handler: {}'.format(msg)) # 1: Start kite websocket connections # Initialise if kws is None and msg != 'INIT': return pdebug('kite_ticker_handler: Exec {}'.format(msg)) if msg == 'INIT': try: cache.set('KiteAPIKey',kite_api_key) access_token = cache.get('access_token') kite.set_access_token(access_token) pinfo(kite.access_token) kws = KiteTicker(kite_api_key, kite.access_token) # Assign the callbacks. kws.on_ticks = on_ticks kws.on_connect = on_connect kws.on_order_update = on_order_update #kws.on_close = on_close cache.publish('kite_ticker_handler'+cache_postfix,'START') except Exception as e: perror('Could not connect to KITE server: {}'.format(e)) elif msg == 'START': kws.connect(threaded=True) #kws.subscribe(value) #kws.set_mode(kws.MODE_LTP, value) #Default mode LTP elif msg == 'STATUS': pinfo(kws.is_connected()) elif msg == 'CLOSE': cache.set('Kite_Status','closed') cache.publish('ohlc_tick_handler'+cache_id,'stop') #cache.publish('ohlc_tick_handler'+cache_id,'stop') kws.close() elif msg == 'profile': pinfo(kite.profile()) else: try: msg_j = json.loads(msg) cmd = msg_j['cmd'] value = msg_j['value'] mode_map = {'ltp':kws.MODE_LTP, 'full':kws.MODE_FULL, 'quote': kws.MODE_QUOTE} mode = mode_map[msg_j['mode']] if cmd == 'add': kws.subscribe(value) kws.set_mode(mode, value) pinfo('Subscribe: {}: {}'.format(cmd, msg)) elif cmd == 'remove': kws.unsubscribe(value) pinfo('Un-Subscribe: {}: {}'.format(cmd, msg)) elif cmd == 'mode': pinfo('Set Mode: {}: {}'.format(cmd, msg)) kws.set_mode(mode, value) except: pass
def GetTickerData(access_token, tokens): kws = KiteTicker('hr1osvvapq449uqf', access_token) # tokens = [11005954] kws.on_ticks = on_ticks kws.on_close = on_close kws.on_error = on_error kws.on_connect = partial(on_connect, tokens) kws.on_reconnect = on_reconnect kws.on_noreconnect = on_noreconnect kws.connect(threaded=True, disable_ssl_verification=True) logging.info( "This is main thread. Will change webosocket mode every 5 seconds.") count = 0 while True: if kws.is_connected(): kws.set_mode(kws.MODE_QUOTE, tokens) time.sleep(1)
# Assign the callbacks. kws.on_ticks = on_ticks kws.on_close = on_close kws.on_error = on_error kws.on_connect = on_connect kws.on_reconnect = on_reconnect kws.on_noreconnect = on_noreconnect # Infinite loop on the main thread. Nothing after this will run. # You have to use the pre-defined callbacks to manage subscriptions. kws.connect(threaded=True) # Block main thread logging.info( "This is main thread. Will change webosocket mode every 5 seconds.") count = 0 while True: count += 1 if count % 2 == 0: if kws.is_connected(): logging.info("### Set mode to LTP for all tokens") kws.set_mode(kws.MODE_LTP, tokens) else: if kws.is_connected(): logging.info("### Set mode to quote for all tokens") kws.set_mode(kws.MODE_QUOTE, tokens) time.sleep(5)