jqdatasdk icon indicating copy to clipboard operation
jqdatasdk copied to clipboard

get_current_tick auth implementation

Open stevegbrooks opened this issue 2 years ago • 0 comments

When I use get_current_tick in a multithreaded setting (see code below), it fails and prints the message "run jqdatasdk.auth first", and returns None.

When I run any other JQData API function with multithreading it runs successfully (no error) and returns a pd.DataFrame.

My guess is this has to do with the way get_current_tick does its authorization check.

Here's a reproducible example:

import jqdatasdk as jq
from concurrent.futures import ThreadPoolExecutor

jq.auth('138********', '********')

##### Multithreaded doesn't work
MAX_THREADS = 3
executor = ThreadPoolExecutor(MAX_THREADS)
stock_data = (result for result in executor.map(jq.get_current_tick, ['000001.XSHE'])) #prints error
next(stock_data) #returns None
########################

#calling it normally works
jq.get_current_tick(['000001.XSHE'])

stevegbrooks avatar Jul 06 '21 12:07 stevegbrooks