Hi Dev team good morning. May I ask for your assistance.
Error 429 and AttributeError
import asyncio
import tkinter
import pandas as pd
import lseg.data as ld
from lseg.data.content import fundamental_and_reference
bonds = pd.read_csv('isin_list.csv')['ISIN'].to_list()
tkinter.Tk().withdraw()
print('Enter your Refinitiv Workspace password in the dialog window.')
pwd = tkinter.simpledialog.askstring('Password Dialog', 'Enter your Refinitiv'
' Workspace password:', show='*')
session = ld.session.platform.Definition(
app_key='key',
grant=ld.session.platform.GrantPassword(
username='',
password=pwd
),
signon_control=True
).get_session()
del pwd
ld.session.set_default(session)
ld.get_config()['http.request-timeout'] = 60
session.open()
print(session.open_state)
async def fetch_data():
increment = 100 # number of instruments in each query (API limit: 7500)
queries = [fundamental_and_reference.Definition(
universe=bonds[i:i+increment],
fields='TR.FiOrgID',
).get_data_async() for i in range(0, len(bonds), increment)]
try:
tasks = asyncio.gather(*queries)
await tasks
responses = tasks.result()
if all([r.is_success for r in responses]):
issuers = pd.concat([r.data.df for r in responses],
ignore_index=True)
issuers.rename(columns={'Instrument': 'Bond ISIN'}, inplace=True)
ids = issuers['Org ID'].drop_duplicates().replace(
{'': None}).dropna().to_list()
requests = [fundamental_and_reference.Definition(
universe=ids[i:i+increment],
fields=['TR.ISIN', 'TR.RIC'],
).get_data_async() for i in range(0, len(ids), increment)]
try:
jobs = asyncio.gather(*requests)
await jobs
results = jobs.result()
if all([r.is_success for r in results]):
codes = pd.concat([r.data.df for r in results],
ignore_index=True)
return pd.merge(issuers, codes, left_on='Org ID',
right_on='Instrument')
else:
raise Exception('Not all queries retrieved successfully.')
except Exception as error:
print(error)
else:
raise Exception('Not all queries retrieved successfully.')
except Exception as error:
print(error)
def callback(task):
if task.done():
task.result().to_csv('//data2/gfsr/GFSR April 2026/02_Data/Dealogic/DCM/raw_data/BondList/bond_issuer_mapping.csv', index=False)
session.close()
print(session.open_state)
else:
print('Main task was not completed.')
task = asyncio.create_task(fetch_data(), name='lseg')
task.add_done_callback(callback)
Thank you