question

Upvotes
Accepted
0 0 0 2

Dsws unable to perform more than one bundle request

I am trying to request several bundles of data through pythons Datastreamdsws module, the first request processes perfectly, but when I iterate for the second and subsequent try it fails with the following error.

get_bundle_data : Exception Occured
(<class 'TypeError'>, TypeError("argument of type 'NoneType' is not iterable"), <traceback object at 0x000001D0E2929240>)
Traceback (most recent call last):
  File "C:\Users\user\miniconda3\envs\test\lib\site-packages\DatastreamDSWS\DS_Response.py", line 209, in get_bundle_data
    if 'DataResponses' in json_Response:
TypeError: argument of type 'NoneType' is not iterable
None

I have tried adding in some sleep time(60 seconds) to help slow it down but regardless it still happens.

I understand I can run a single request but this seems faster and better for our workflow. So I want to make it work.

Is there a way to disconnect are reconnect? or some other alternative, because I can run the script, then rerun again immediately and it works fine.

Alternatively, is there a function in the new RD Library which could replace my request?

I note in the documentation for dsws bundle request that there is a maximum of 100x5. I am operating in that with all requests having 20 tickers and 5 fields (100) and a maximum of 5 requests (500).

Here is the code I am running:

reqs =[]
for i in range(6):
    for i in range(len(ticker_str_list)):  
        reqs.append(ds.post_user_request(tickers=ticker_str_list[i], fields=['P','ISOCUR','P.U','PI','RI'], start=calc_date, end=calc_date, kind=0)

    sd = ds.get_bundle_data(bundleRequest=reqs)

successful 'sd' output example which happens on first request:

[100 rows x 5 columns],        Instrument Datatype   Value Currency       Dates
0       <JYPE.NS>        P    2.45       IR  2022-09-13
1        <GIBG.F>        P      93       E   2022-09-13
2       <0503.HK>        P    1.17       K$  2022-09-13
3       <4942.TW>        P   37.15       TW  2022-09-13
4        <AMA.MC>        P   51.44       E   2022-09-13
..            ...      ...     ...      ...         ...
95       <HCH.AX>       RI   13.41       A$  2022-09-13
96  <CHDRAUIB.MX>       RI  176.72       MP  2022-09-13
97      <1972.HK>       RI  154.58       K$  2022-09-13
98      <NEXT.TO>       RI   60.41       C$  2022-09-13
99      <CRDE.PK>       RI   84.23       U$  2022-09-13

Version:

datastreamdsws 1.0.10

python apierrordatastreambatch-request
icon clock
10 |1500

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

hi @Blue.suit

Thank you for your participation in the forum. Is the reply below satisfactory in resolving your query?
If so please can you click the 'Accept' text on the left side of the appropriate reply? This will guide all community members who have a similar question.

Thanks,
AHS

Please be informed that a reply has been verified as correct in answering the question, and has been marked as such.

Thanks,


AHS

1 Answer

· Write an Answer
Upvote
Accepted
79.2k 251 52 74

@james.marchetti

Thanks for reaching out to us.

You may need to empty the reqs array for each get_bundle_data request.

The code looks like this:

for i in range(6):
    reqs =[]
    for i in range(len(ticker_str_list)):  
        reqs.append(ds.post_user_request(tickers=ticker_str_list[i], fields=['P','ISOCUR','P.U','PI','RI'], kind=0))
        
    sd = ds.get_bundle_data(bundleRequest=reqs)

Please feel free to reach out if you have any further questions.

icon clock
10 |1500

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

Thanks, this was a great help

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

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