question

Upvotes
Accepted
9 2 3 9

Refinitiv.dataplatform "search" get's stuck when called inside a function

Hi everyone,

I like to implement a function that uses the "search" function of the package refinitiv.dataplatform (rdp) whenever it is called. However, when I run such a function, python always gets freezed without posting an error message. The strange thing is that when I run the function in debug mode, it works fine.


Here is a minimal example:

import refinitiv.dataplatform as rdp
Name="ADIDAS"
def getRelevantCDAXProducts(Name):
RDP_LOGIN = "<login>"

RDP_PASSWORD = "<password>"

APP_KEY = "<app_key>"


session = rdp.open_platform_session(
APP_KEY,
rdp.GrantPassword(
username = RDP_LOGIN,
password = RDP_PASSWORD
)
)

searchResults=rdp.search(view = rdp.SearchViews.EquityQuotes,query=Name)


return searchResults

results=getRelevantCDAXProducts(Name)


Has anybody an idea why this issue occurs? If not, I would be very grateful if someone would at least try to run the minimal example to see what happens ("please note that you have to add your credentials"). It would be interesting to see whether this is a general problem or not.


Thank you very much!

rdp-apirefinitiv-data-platformrefinitiv-data-platform-libraries
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 5.0 MiB each and 10.0 MiB total.

Upvote
Accepted
9.7k 49 38 60

Hi @Eikon10

I changed your application a little - you don't want to attempt to open the session over and over. That is, you don't need to open the session every time you search. Once opened, you can make as many calls while the session has been opened.

import refinitiv.dataplatform as rdp

RDP_LOGIN = "<login>"
RDP_PASSWORD = "<password>"
APP_KEY = "<appkey>"

session = rdp.open_platform_session(
    APP_KEY,
    rdp.GrantPassword(
        username = RDP_LOGIN,
        password = RDP_PASSWORD
    )
)

def getRelevantCDAXProducts(Name):
    searchResults=rdp.search(
        view=rdp.SearchViews.EquityQuotes,
        query=Name
    )
 
    return searchResults

Now you can simply call your function:

Name="ADIDAS"
results=getRelevantCDAXProducts(Name)
results

Note: I did the following in a simple Jupyter notebook but the same applies to a standard Python application.

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 5.0 MiB each and 10.0 MiB total.

Upvote
39.2k 75 11 27

@Eikon10

I do not reproduce the behavior you describe. On my end the function returns dataframe with the results of the search as expected. On a side note I should say that opening RDP session inside the function, which you intend to call repeatedly, is not a good practice. The good practice is to open RDP session once through the lifetime of your application. But despite not following good practice for opening the session, your code works fine on my end.

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 5.0 MiB each and 10.0 MiB total.

Upvotes
9 2 3 9

Thank you very much for your answers! Your are right, opening the session within the function is bad programming style, I changed that. Unfortunately, this did not solve my issue.


However, since the code worked in your case, I set up a new minimal virtual environment and then it worked well. There might be some conflicts with other packages that explain these conflicts.

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 5.0 MiB each and 10.0 MiB total.

Click below to post an Idea Post Idea