Skip to content

Commit 8a3e54b

Browse files
committed
Completed the article.
Updated readme links. Updated project dependencies.
1 parent 47bdadf commit 8a3e54b

3 files changed

Lines changed: 21 additions & 9 deletions

File tree

Article.md

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -686,6 +686,8 @@ df_all[df_all["RIC"] == "AMZN.O"]
686686

687687
That’s all I have to say about how to use historical-pricing data from Data Platform APIs.
688688

689+
690+
689691
## What If I Use Other Programming Languages?
690692

691693
The asynchronous execution model is not limited to Python. Most modern programming languages have built-in or well-supported async HTTP capabilities, so the same patterns demonstrated in this article — concurrent requests, throttling with a semaphore, and per-result error handling — translate naturally to other ecosystems.
@@ -716,10 +718,17 @@ That said, async code does introduce more moving parts — coroutines, semaphore
716718

717719
**One important thing to keep in mind**: the Data Platform enforces per-account rate limits. If you send too many concurrent requests, you will receive an **HTTP 429 Too Many Requests** error. Always throttles your concurrency, and be ready to reduce your request rate if you start seeing 429 responses.
718720

719-
For further reading, I recommend the following resources:
721+
## Next Step
722+
723+
The `asyncio.gather` is not the only option that Python Asyncio offers for developers. If you prefer to manual manage and run coroutine, the [`asyncio.create_task`](https://docs.python.org/3/library/asyncio-task.html#asyncio.create_task) migth suite your need. This low-level method schedules a coroutine to run as a background task immediately, without waiting.
724+
725+
Introduced in Python version 3.11, [`asyncio.TaskGroup`](https://docs.python.org/3/library/asyncio-task.html#asyncio.TaskGroup) provides a modern, cleaner, and fail-safe way for structured concurrency I/O bound operations. It is suitable for I/O piplines that any failure should abort the whole operation.
726+
727+
There are much more Data Platform endpoints, HTTPX and Asyncio features that you can explore to find the things that suite your technical and bussiness needs. For further reading, I recommend the following resources:
720728

721729
- [Data Platform APIs Quick Start](https://developers.lseg.com/en/api-catalog/refinitiv-data-platform/refinitiv-data-platform-apis/quick-start)
722730
- [Data Platform APIs Tutorials](https://developers.lseg.com/en/api-catalog/refinitiv-data-platform/refinitiv-data-platform-apis/tutorials)
731+
- [Data Platform APIs Documents](https://developers.lseg.com/en/api-catalog/refinitiv-data-platform/refinitiv-data-platform-apis/documents)
723732
- [HTTPX Documentation](https://www.python-httpx.org/)
724733
- [Python asyncio Documentation](https://docs.python.org/3/library/asyncio.html)
725734

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,9 @@ Apache 2.0. See [LICENSE.md](LICENSE.md).
188188
For further details, please check out the following resources:
189189

190190
- [LSEG Data Platform](https://developers.lseg.com/en/api-catalog/refinitiv-data-platform/refinitiv-data-platform-apis) on the [LSEG Developers Portal](https://developers.lseg.com/en/) website.
191+
- [Data Platform APIs Quick Start](https://developers.lseg.com/en/api-catalog/refinitiv-data-platform/refinitiv-data-platform-apis/quick-start)
192+
- [Data Platform APIs Tutorials](https://developers.lseg.com/en/api-catalog/refinitiv-data-platform/refinitiv-data-platform-apis/tutorials)
193+
- [Data Platform APIs Documents](https://developers.lseg.com/en/api-catalog/refinitiv-data-platform/refinitiv-data-platform-apis/documents)
191194
- [HTTPX library](https://www.python-httpx.org/) and [GitHub](https://github.com/encode/httpx) pages.
192195
- [Python Asyncio library](https://docs.python.org/3/library/asyncio.html) page.
193196
- [Python's asyncio: A Hands-On Walkthrough](https://realpython.com/async-io-python/)

requirements.txt

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ beautifulsoup4==4.14.3
1010
bleach==6.3.0
1111
certifi==2026.2.25
1212
cffi==2.0.0
13-
charset-normalizer==3.4.6
13+
charset-normalizer==3.4.7
1414
colorama==0.4.6
1515
comm==0.2.3
1616
debugpy==1.8.20
@@ -34,7 +34,7 @@ jsonpointer==3.1.1
3434
jsonschema==4.26.0
3535
jsonschema-specifications==2025.9.1
3636
jupyter-events==0.12.0
37-
jupyter-lsp==2.3.0
37+
jupyter-lsp==2.3.1
3838
jupyter_client==8.8.0
3939
jupyter_core==5.9.1
4040
jupyter_server==2.17.0
@@ -47,16 +47,16 @@ MarkupSafe==3.0.3
4747
matplotlib-inline==0.2.1
4848
mistune==3.2.0
4949
nbclient==0.10.4
50-
nbconvert==7.17.0
50+
nbconvert==7.17.1
5151
nbformat==5.10.4
5252
nest-asyncio==1.6.0
5353
notebook_shim==0.2.4
5454
numpy==2.4.4
5555
packaging==26.0
56-
pandas==3.0.1
56+
pandas==3.0.2
5757
pandocfilters==1.5.1
5858
parso==0.8.6
59-
platformdirs==4.9.4
59+
platformdirs==4.9.6
6060
prometheus_client==0.24.1
6161
prompt_toolkit==3.0.52
6262
psutil==7.2.2
@@ -70,7 +70,7 @@ pywinpty==3.0.3
7070
PyYAML==6.0.3
7171
pyzmq==27.1.0
7272
referencing==0.37.0
73-
requests==2.33.0
73+
requests==2.33.1
7474
rfc3339-validator==0.1.4
7575
rfc3986-validator==0.1.1
7676
rfc3987-syntax==1.1.0
@@ -81,11 +81,11 @@ six==1.17.0
8181
soupsieve==2.8.3
8282
stack-data==0.6.3
8383
terminado==0.18.1
84-
tinycss2==1.4.0
84+
tinycss2==1.5.1
8585
tornado==6.5.5
8686
traitlets==5.14.3
8787
typing_extensions==4.15.0
88-
tzdata==2025.3
88+
tzdata==2026.1
8989
uri-template==1.3.0
9090
urllib3==2.6.3
9191
wcwidth==0.6.0

0 commit comments

Comments
 (0)