์๋ !
์ฝ 3๋ถ์ด ์์๋๋ ๊ธด ๋ณด๊ณ ์๋ฅผ PDF๋ก ์์ฑํ๊ณ ์์ผ๋ฉฐ ๋ฐฐ๊ด๊ณต์ ํตํด ์ด๋ฅผ ๋
ธ์ถํฉ๋๋ค.
HTTP ์ฐ๊ฒฐ์ ์ฝ 1๋ถ 40์ด(100์ด)์ ๋ซํ๋๋ค.
๋ฐฐ๊ด๊ณต์ด ๋ซํ ์ฐ๊ฒฐ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋ ค๊ณ ํ๊ธฐ ๋๋ฌธ์ ๋
ผ๋ฆฌ์ ์ค๋ฅ ๋ฉ์์ง๊ฐ ํ์๋ฉ๋๋ค.
ERROR: [on_request_read] connection reset by peer
๋๋ ๊ทธ๊ฒ์ด # 12์ ๊ด๋ จ ๋ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฐ๋ฐ https://github.com/rstudio/httpuv/issues/49
๋ฐฐ๊ด๊ณต์์ ๊ทธ๊ฒ์ ๊ณ ์น ์์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น? Plumber์์ ๋ค์๊ณผ ๊ฐ์ด ์๋์ผ๋ก ๋ณด๋ผ ์ ์์ต๋๋ค.
Keep-Alive: timeout=300
Connection: Keep-Alive
๊ทธ๋ฌ๋ ์ด์จ๋ ์ฐ๋ฆฌ๋ # 12๋ฅผ ํผํ๊ณ ์ถ์ต๋๋ค.
์น์ ํ๋,
์๋ง๋์
๋ถํํ๋ ๋๋ httpuv์ ๋ด๋ถ์ ๋ํด ์ถฉ๋ถํ ์ต์ํ์ง ์์ ์ด๊ฒ์ด ์ผ์ด๋ ์ ์๋ ์ด์ ์ ๋ํด ์ง๋ฅ์ ์ผ๋ก ๋งํ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ํ ๊ฑธ์ ๋ฌผ๋ฌ์๊ธฐ ์ํด ๋ค๋ฅธ ์์คํ ์์ ์ด๋ฌํ ์ข ๋ฅ์ ์ค๋ ์ง์๋๋ ์์ ์ ์ํํ ๋ ์ผ๋ฐ์ ์ธ ํจํด์ ๋ค์ด์ค๋ ์์ฒญ์ ์ฆ์ ์๋ตํ ๋ค์ ๋น๋๊ธฐ์์ผ๋ก ์์ ์ ์์ํ๋ ๊ฒ์ ๋๋ค. ํด๋ผ์ด์ธํธ๋ ์๋ ์์ฒญ์ ๋ํ ์๋ต์ผ๋ก ์ผ๋ถ ID๋ฅผ ์ป์ ๋ค์ ์๋ฃ๋ ๋ ํ์ธํ๊ธฐ ์ํด ํด๋งํ ์ ์์ต๋๋ค.
๋ถํํ๋ R์ ๋จ์ผ ์ค๋ ๋์ด๋ฏ๋ก ์ด๊ฒ์ ์กฐ๊ธ ๋ ๋ณต์กํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋๊ธฐ๊ฐ ์ถฉ๋ถํ๋ค๋ฉด R ํ๋ก์ธ์ค์์ fork
๋ฅผ ์ดํด๋ณธ ๋ค์(๋ณ๋ ฌ ๋๋ ๋ค์ค ์ฝ์ด ํจํค์ง ์ฐธ์กฐ) ํ๋ก์ธ์ค์ ํฌํฌ์์ ๋ณด๊ณ ์๋ฅผ ์์ฑํ์ฌ ์์ ํ๋ก์ธ์ค๋ฅผ API ์์ฒญ์ ์๋ตํ ์ ์๋๋ก ๋จ๊ฒจ๋ ์ ์์ต๋๋ค. (์: ๋ณด๊ณ ์๊ฐ ์์ฑ๋์๋์ง ํ์ธํ๊ธฐ ์ํด ํด๋งํ๋ ํด๋ผ์ด์ธํธ).
์๋ ,
์ฌ๊ธฐ์์ R ์ฝ๋๋ฅผ ์ต์ ํํ์ฌ ์ค์ ๋ก ๋ฌธ์ ๊ฐ ๋์ง ์๋๋ก ํ์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ฌธ์ ๋ ๋ค๋ฅธ ๊ฒฝ์ฐ์ ๋ค์ ๋ํ๋ ์ ์์ต๋๋ค. ํด๊ฒฐ์ฑ ์ ์ฐพ์ผ๋ฉด ๋์์์ ์ฌ๊ธฐ์ ๊ฒ์ํ๊ฒ ์ต๋๋ค.
๋๊ตฐ๊ฐ๊ฐ ์ด ๋ฌธ์ ์ ๊ด๋ จ์ด ์๋ค๊ณ ์๊ฐํ๋ ๊ฒฝ์ฐ๋ฅผ ๋๋นํ์ฌ: fork
ing์ ๋งค์ฐ ์ ์๋ํ๋ฉฐ parallel
ํจํค์ง๋ก ์ฝ๊ฒ ์๋ฃ๋ฉ๋๋ค.
parallel <- function() {
# Long running calculation here
print("Sleeping...")
Sys.sleep(10)
print("Finished.")
return(Sys.time())
}
#* <strong i="8">@get</strong> /parallel
parallelTest <- function() {
parallel::mcparallel(parallel())
return(TRUE)
}
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋๊ตฐ๊ฐ๊ฐ ์ด ๋ฌธ์ ์ ๊ด๋ จ์ด ์๋ค๊ณ ์๊ฐํ๋ ๊ฒฝ์ฐ๋ฅผ ๋๋นํ์ฌ:
fork
ing์ ๋งค์ฐ ์ ์๋ํ๋ฉฐparallel
ํจํค์ง๋ก ์ฝ๊ฒ ์๋ฃ๋ฉ๋๋ค.