@@ -30,8 +30,6 @@ <h2>Contents</h2>
3030 <li><a href="#important-technical-notes">Important Technical Notes:</a></li>
3131 <li><a href="#performance-tips">Performance Tips:</a></li>
3232 </ul></li>
33- <li><a href="#ideal">✅ Ideal</a></li>
34- <li><a href="#bad-each-client-has-separate-rate-limits">❌ Bad: Each client has separate rate limits</a></li>
3533</ul>
3634
3735
@@ -248,28 +246,27 @@ <h2 id="important-technical-notes">Important Technical Notes:</h2>
248246</code></pre>
249247</div></li>
250248
251- <li><p>Rate Limiting
252- ```python</p>
249+ <li><p>Rate Limiting</p>
253250
254- <h1 id="ideal">✅ Ideal</h1>
255-
256- <p>async def parallel_with():
257- async with NOAAClient(token="TOKEN") as client:
258- tasks = [client.get_datasets() for _ in range(20)]
259- return await asyncio.gather(*tasks) # Rate limits respected</p>
260-
261- <h1 id="bad-each-client-has-separate-rate-limits">❌ Bad: Each client has separate rate limits</h1>
262-
263- <p>async def parallel_separate():
264- tasks = []
265- for i in range(20):
266- client = NOAAClient(token="TOKEN") # Each has separate limiter
267- tasks.append(client.get_datasets())
268- return await asyncio.gather(*tasks) # May exceed rate limits</p></li>
251+ <div class="pdoc-code codehilite">
252+ <pre><span></span><code><span class="c1"># ✅ Ideal</span>
253+ <span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">parallel_with</span><span class="p">():</span>
254+ <span class="k">async</span> <span class="k">with</span> <span class="n">NOAAClient</span><span class="p">(</span><span class="n">token</span><span class="o">=</span><span class="s2">"TOKEN"</span><span class="p">)</span> <span class="k">as</span> <span class="n">client</span><span class="p">:</span>
255+ <span class="n">tasks</span> <span class="o">=</span> <span class="p">[</span><span class="n">client</span><span class="o">.</span><span class="n">get_datasets</span><span class="p">()</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">20</span><span class="p">)]</span>
256+ <span class="k">return</span> <span class="k">await</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">gather</span><span class="p">(</span><span class="o">*</span><span class="n">tasks</span><span class="p">)</span> <span class="c1"># Rate limits respected</span>
257+
258+
259+ <span class="c1"># ❌ Bad: Each client has separate rate limits</span>
260+ <span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">parallel_separate</span><span class="p">():</span>
261+ <span class="n">tasks</span> <span class="o">=</span> <span class="p">[]</span>
262+ <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">20</span><span class="p">):</span>
263+ <span class="n">client</span> <span class="o">=</span> <span class="n">NOAAClient</span><span class="p">(</span><span class="n">token</span><span class="o">=</span><span class="s2">"TOKEN"</span><span class="p">)</span> <span class="c1"># Each has separate limiter</span>
264+ <span class="n">tasks</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">client</span><span class="o">.</span><span class="n">get_datasets</span><span class="p">())</span>
265+ <span class="k">return</span> <span class="k">await</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">gather</span><span class="p">(</span><span class="o">*</span><span class="n">tasks</span><span class="p">)</span> <span class="c1"># May exceed rate limits</span>
266+ </code></pre>
267+ </div></li>
269268</ol>
270269
271- <p>```</p>
272-
273270<h2 id="performance-tips">Performance Tips:</h2>
274271
275272<ol>
@@ -413,7 +410,7 @@ <h2 id="performance-tips">Performance Tips:</h2>
413410</span><span id="L-102"><a href="#L-102"><span class="linenos">102</span></a><span class="sd"> tasks.append(client.get_datasets())</span>
414411</span><span id="L-103"><a href="#L-103"><span class="linenos">103</span></a><span class="sd"> return await asyncio.gather(*tasks) # May exceed rate limits</span>
415412</span><span id="L-104"><a href="#L-104"><span class="linenos">104</span></a>
416- </span><span id="L-105"><a href="#L-105"><span class="linenos">105</span></a><span class="sd">```</span>
413+ </span><span id="L-105"><a href="#L-105"><span class="linenos">105</span></a><span class="sd"> ```</span>
417414</span><span id="L-106"><a href="#L-106"><span class="linenos">106</span></a>
418415</span><span id="L-107"><a href="#L-107"><span class="linenos">107</span></a><span class="sd">Performance Tips:</span>
419416</span><span id="L-108"><a href="#L-108"><span class="linenos">108</span></a><span class="sd">----------------</span>
0 commit comments