Add client.close() in httpclient examples. (#20118)
Without this, the httpclient examples are essentially setting you up for failure. I was bitten by this when my app became unable to open any more sockets. I'm not entirely sure how long this will relevant, as I hope destructors will be added to an upcoming version of the stdlib. But figured it was worth submitting anyways!
This commit is contained in:
parent
09840c09e4
commit
7af484da94
1 changed files with 25 additions and 9 deletions
|
|
@ -19,7 +19,10 @@
|
||||||
## .. code-block:: Nim
|
## .. code-block:: Nim
|
||||||
## import std/httpclient
|
## import std/httpclient
|
||||||
## var client = newHttpClient()
|
## var client = newHttpClient()
|
||||||
## echo client.getContent("http://google.com")
|
## try:
|
||||||
|
## echo client.getContent("http://google.com")
|
||||||
|
## finally:
|
||||||
|
## client.close()
|
||||||
##
|
##
|
||||||
## The same action can also be performed asynchronously, simply use the
|
## The same action can also be performed asynchronously, simply use the
|
||||||
## `AsyncHttpClient`:
|
## `AsyncHttpClient`:
|
||||||
|
|
@ -29,7 +32,10 @@
|
||||||
##
|
##
|
||||||
## proc asyncProc(): Future[string] {.async.} =
|
## proc asyncProc(): Future[string] {.async.} =
|
||||||
## var client = newAsyncHttpClient()
|
## var client = newAsyncHttpClient()
|
||||||
## return await client.getContent("http://example.com")
|
## try:
|
||||||
|
## return await client.getContent("http://example.com")
|
||||||
|
## finally:
|
||||||
|
## client.close()
|
||||||
##
|
##
|
||||||
## echo waitFor asyncProc()
|
## echo waitFor asyncProc()
|
||||||
##
|
##
|
||||||
|
|
@ -53,8 +59,10 @@
|
||||||
## data["output"] = "soap12"
|
## data["output"] = "soap12"
|
||||||
## data["uploaded_file"] = ("test.html", "text/html",
|
## data["uploaded_file"] = ("test.html", "text/html",
|
||||||
## "<html><head></head><body><p>test</p></body></html>")
|
## "<html><head></head><body><p>test</p></body></html>")
|
||||||
##
|
## try:
|
||||||
## echo client.postContent("http://validator.w3.org/check", multipart=data)
|
## echo client.postContent("http://validator.w3.org/check", multipart=data)
|
||||||
|
## finally:
|
||||||
|
## client.close()
|
||||||
##
|
##
|
||||||
## To stream files from disk when performing the request, use `addFiles`.
|
## To stream files from disk when performing the request, use `addFiles`.
|
||||||
##
|
##
|
||||||
|
|
@ -66,8 +74,10 @@
|
||||||
## var client = newHttpClient()
|
## var client = newHttpClient()
|
||||||
## var data = newMultipartData()
|
## var data = newMultipartData()
|
||||||
## data.addFiles({"uploaded_file": "test.html"}, mimeDb = mimes)
|
## data.addFiles({"uploaded_file": "test.html"}, mimeDb = mimes)
|
||||||
##
|
## try:
|
||||||
## echo client.postContent("http://validator.w3.org/check", multipart=data)
|
## echo client.postContent("http://validator.w3.org/check", multipart=data)
|
||||||
|
## finally:
|
||||||
|
## client.close()
|
||||||
##
|
##
|
||||||
## You can also make post requests with custom headers.
|
## You can also make post requests with custom headers.
|
||||||
## This example sets `Content-Type` to `application/json`
|
## This example sets `Content-Type` to `application/json`
|
||||||
|
|
@ -81,8 +91,11 @@
|
||||||
## let body = %*{
|
## let body = %*{
|
||||||
## "data": "some text"
|
## "data": "some text"
|
||||||
## }
|
## }
|
||||||
## let response = client.request("http://some.api", httpMethod = HttpPost, body = $body)
|
## try:
|
||||||
## echo response.status
|
## let response = client.request("http://some.api", httpMethod = HttpPost, body = $body)
|
||||||
|
## echo response.status
|
||||||
|
## finally:
|
||||||
|
## client.close()
|
||||||
##
|
##
|
||||||
## Progress reporting
|
## Progress reporting
|
||||||
## ==================
|
## ==================
|
||||||
|
|
@ -101,7 +114,10 @@
|
||||||
## proc asyncProc() {.async.} =
|
## proc asyncProc() {.async.} =
|
||||||
## var client = newAsyncHttpClient()
|
## var client = newAsyncHttpClient()
|
||||||
## client.onProgressChanged = onProgressChanged
|
## client.onProgressChanged = onProgressChanged
|
||||||
## discard await client.getContent("http://speedtest-ams2.digitalocean.com/100mb.test")
|
## try:
|
||||||
|
## discard await client.getContent("http://speedtest-ams2.digitalocean.com/100mb.test")
|
||||||
|
## finally:
|
||||||
|
## client.close()
|
||||||
##
|
##
|
||||||
## waitFor asyncProc()
|
## waitFor asyncProc()
|
||||||
##
|
##
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue