I am having a problem with Dask in CODEBK. Specifically, if I call get_news_story() from the Eikon API in a Dask worker I get the following error:
--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-74-f3a00d0c8ed3> in <module> 21 22 for f in as_completed(fut): ---> 23 stories[f.result().id] = f.result() /opt/conda/lib/python3.7/site-packages/distributed/client.py in result(self, timeout) 223 if self.status == "error": 224 typ, exc, tb = result --> 225 raise exc.with_traceback(tb) 226 elif self.status == "cancelled": 227 raise result <ipython-input-74-f3a00d0c8ed3> in __init__() 9 def __init__(self, idIn): 10 self.id = idIn; ---> 11 tmp = ek.get_news_story(self.id, raw_output=True) 12 self.headline = tmp['story']['headlineHtml'] 13 self.story = tmp['story']['storyHtml'] /opt/conda/lib/python3.7/site-packages/refinitiv/dataplatform/legacy/news_request.py in get_news_story() 196 print (story) 197 """ --> 198 logger = DefaultSession.get_default_session().logger() 199 200 # check parameters type and values AttributeError: 'NoneType' object has no attribute 'logger'
The following code in CODEBK should replicate the issue.
import refinitiv.dataplatform.eikon as ek
ek.set_app_key('DEFAULT_CODE_BOOK_APP_KEY')from dask.distributed import Client, as_completed
client = Client("tcp://127.0.0.1:41045")class story:
def __init__(self, idIn): self.id = idIn; tmp = ek.get_news_story(self.id, raw_output=True) self.headline = tmp['story']['headlineHtml'] self.story = tmp['story']['storyHtml'] stories = {} fut = [] currentHeadlines = ek.get_news_headlines(query='Language:LEN', count=10) for col, row in currentHeadlines.iterrows(): storyId = row['storyId'] fut.append(client.submit(story, storyId))for f in as_completed(fut):
stories[f.result().id] = f.result()