mirror of
https://github.com/ninenines/cowboy.git
synced 2025-07-14 12:20:24 +00:00
Implement backpressure on cowboy_req:stream_body
This should limit the amount of memory that Cowboy is using when a handler is sending data much faster than the network. The new max_stream_buffer_size is a soft limit and only has an effect when the cowboy_stream_h handler is used.
This commit is contained in:
parent
4427108b69
commit
49af57d546
6 changed files with 91 additions and 25 deletions
|
@ -98,7 +98,7 @@ do_get(Path, Headers, Config) ->
|
|||
Ref = gun:get(ConnPid, Path, [{<<"accept-encoding">>, <<"gzip">>}|Headers]),
|
||||
{response, IsFin, Status, RespHeaders} = gun:await(ConnPid, Ref),
|
||||
{ok, RespBody} = case IsFin of
|
||||
nofin -> gun:await_body(ConnPid, Ref);
|
||||
nofin -> gun:await_body(ConnPid, Ref, 30000);
|
||||
fin -> {ok, <<>>}
|
||||
end,
|
||||
gun:close(ConnPid),
|
||||
|
@ -891,6 +891,11 @@ stream_body_multiple(Config) ->
|
|||
{200, _, <<"Hello world!">>} = do_get("/resp/stream_body/multiple", Config),
|
||||
ok.
|
||||
|
||||
stream_body_loop(Config) ->
|
||||
doc("Streamed body via a fast loop."),
|
||||
{200, _, <<0:32000000/unit:8>>} = do_get("/resp/stream_body/loop", Config),
|
||||
ok.
|
||||
|
||||
stream_body_nofin(Config) ->
|
||||
doc("Unfinished streamed body."),
|
||||
{200, _, <<"Hello world!">>} = do_get("/resp/stream_body/nofin", Config),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue