OK, I was able to reproduce it with this script:
Mix.install([:req])
url = "https://www2.census.gov/geo/tiger/TIGER2021/SLDL/tl_2021_50_sldl.zip"
Enum.each(1..50, fn _ ->
IO.inspect(Req.get!(url).status)
Process.sleep(2000)
end)
interestingly, for me, it always either printer 200,200,… OR 304,304,… never one or the other (though I didn’t run it for long)
%Req.Response{headers: [..., {"vary", "Accept-Encoding"}, ...]}
Req by default sets accept-encoding with gzip and others. Maybe that is confusing the server? You can turn it off like this: compressed: false
.
I have tried this a few times and always kept getting 200s:
Mix.install([:req])
url = "https://www2.census.gov/geo/tiger/TIGER2021/SLDL/tl_2021_50_sldl.zip"
Enum.each(1..50, fn _ ->
IO.inspect(Req.get!(url, compressed: false).status)
Process.sleep(2000)
end)