chore: run tools/build
This commit is contained in:
parent
251fe6a6c5
commit
d3562a7a94
@ -1,2 +1,2 @@
|
||||
4f327f5bd5ac199ae5590652563ea6ca4ce7eff5
|
||||
lqf7pC2FUeT
|
||||
79547a5eac4239581488a8a536e5379819ab839e
|
||||
gv2VaeN0wi1
|
||||
|
13
public/rate-limiting
generated
13
public/rate-limiting
generated
@ -45,7 +45,7 @@ channels, and <a href="tickers">tickers</a>.</p>
|
||||
|
||||
</td>
|
||||
<td class="code leading">
|
||||
<a href="https://go.dev/play/p/lqf7pC2FUeT"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
|
||||
<a href="https://go.dev/play/p/gv2VaeN0wi1"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"><span class="kn">package</span> <span class="nx">main</span></span></span></code></pre>
|
||||
</td>
|
||||
</tr>
|
||||
@ -151,14 +151,19 @@ channel will allow bursts of up to 3 events.</p>
|
||||
<tr>
|
||||
<td class="docs">
|
||||
<p>Every 200 milliseconds we’ll try to add a new
|
||||
value to <code>burstyLimiter</code>, up to its limit of 3.</p>
|
||||
value to <code>burstyLimiter</code>, up to its limit of 3.
|
||||
If there is no space left then we continue.</p>
|
||||
|
||||
</td>
|
||||
<td class="code leading">
|
||||
|
||||
<pre class="chroma"><code><span class="line"><span class="cl"> <span class="k">go</span> <span class="kd">func</span><span class="p">()</span> <span class="p">{</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="nx">t</span> <span class="o">:=</span> <span class="k">range</span> <span class="nx">time</span><span class="p">.</span><span class="nf">Tick</span><span class="p">(</span><span class="mi">200</span> <span class="o">*</span> <span class="nx">time</span><span class="p">.</span><span class="nx">Millisecond</span><span class="p">)</span> <span class="p">{</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="nx">burstyLimiter</span> <span class="o"><-</span> <span class="nx">t</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="k">select</span> <span class="p">{</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="k">case</span> <span class="nx">burstyLimiter</span> <span class="o"><-</span> <span class="nx">t</span><span class="p">:</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="k">default</span><span class="p">:</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="k">continue</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="p">}</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="p">}</span>
|
||||
</span></span><span class="line"><span class="cl"> <span class="p">}()</span></span></span></code></pre>
|
||||
</td>
|
||||
@ -239,7 +244,7 @@ then serve the remaining 2 with ~200ms delays each.</p>
|
||||
</div>
|
||||
<script>
|
||||
var codeLines = [];
|
||||
codeLines.push('');codeLines.push('package main\u000A');codeLines.push('import (\u000A \"fmt\"\u000A \"time\"\u000A)\u000A');codeLines.push('func main() {\u000A');codeLines.push(' requests :\u003D make(chan int, 5)\u000A for i :\u003D 1; i \u003C\u003D 5; i++ {\u000A requests \u003C- i\u000A }\u000A close(requests)\u000A');codeLines.push(' limiter :\u003D time.Tick(200 * time.Millisecond)\u000A');codeLines.push(' for req :\u003D range requests {\u000A \u003C-limiter\u000A fmt.Println(\"request\", req, time.Now())\u000A }\u000A');codeLines.push(' burstyLimiter :\u003D make(chan time.Time, 3)\u000A');codeLines.push(' for i :\u003D 0; i \u003C 3; i++ {\u000A burstyLimiter \u003C- time.Now()\u000A }\u000A');codeLines.push(' go func() {\u000A for t :\u003D range time.Tick(200 * time.Millisecond) {\u000A burstyLimiter \u003C- t\u000A }\u000A }()\u000A');codeLines.push(' burstyRequests :\u003D make(chan int, 5)\u000A for i :\u003D 1; i \u003C\u003D 5; i++ {\u000A burstyRequests \u003C- i\u000A }\u000A close(burstyRequests)\u000A for req :\u003D range burstyRequests {\u000A \u003C-burstyLimiter\u000A fmt.Println(\"request\", req, time.Now())\u000A }\u000A}\u000A');codeLines.push('');codeLines.push('');
|
||||
codeLines.push('');codeLines.push('package main\u000A');codeLines.push('import (\u000A \"fmt\"\u000A \"time\"\u000A)\u000A');codeLines.push('func main() {\u000A');codeLines.push(' requests :\u003D make(chan int, 5)\u000A for i :\u003D 1; i \u003C\u003D 5; i++ {\u000A requests \u003C- i\u000A }\u000A close(requests)\u000A');codeLines.push(' limiter :\u003D time.Tick(200 * time.Millisecond)\u000A');codeLines.push(' for req :\u003D range requests {\u000A \u003C-limiter\u000A fmt.Println(\"request\", req, time.Now())\u000A }\u000A');codeLines.push(' burstyLimiter :\u003D make(chan time.Time, 3)\u000A');codeLines.push(' for i :\u003D 0; i \u003C 3; i++ {\u000A burstyLimiter \u003C- time.Now()\u000A }\u000A');codeLines.push(' go func() {\u000A for t :\u003D range time.Tick(200 * time.Millisecond) {\u000A select {\u000A case burstyLimiter \u003C- t:\u000A default:\u000A continue\u000A }\u000A }\u000A }()\u000A');codeLines.push(' burstyRequests :\u003D make(chan int, 5)\u000A for i :\u003D 1; i \u003C\u003D 5; i++ {\u000A burstyRequests \u003C- i\u000A }\u000A close(burstyRequests)\u000A for req :\u003D range burstyRequests {\u000A \u003C-burstyLimiter\u000A fmt.Println(\"request\", req, time.Now())\u000A }\u000A}\u000A');codeLines.push('');codeLines.push('');
|
||||
</script>
|
||||
<script src="site.js" async></script>
|
||||
</body>
|
||||
|
Loading…
x
Reference in New Issue
Block a user