Веб-сервер для отдачи статики с диска
Используется неблокирующий ввод/вывод, кооперативная многозадачность, асинхронное программирование с помощью библиотеки AsyncIO, так как операции в веб-сервере являются IO bound (больше висят попеременно в ожидании ввода/вывода)
Создаются однопоточные процессы worker
с циклом событий, которые слушают привязанный к host:ip
сокет и одновременно обрабатывают соединения и запросы.
cd /tmp
git clone https://github.com/zelflod/highload_web_server.git
docker build -t py_web_server https://github.com/zelflod/highload_web_server.git
docker run -it -p 80:80 -v /tmp/highload_web_server/httpd.conf:/etc/httpd.conf:ro -v /tmp/highload_web_server/http-test-suite:/var/www/html:ro --name py_web_server -t py_web_server
# sudo docker start -a py_web_server
sudo docker build -t py_web_server .
sudo docker run -it -p 80:80 -v /home/nozim/Documents/Univer/VKR/highload_web_server/httpd.conf:/etc/httpd.conf:ro -v /home/nozim/Documents/Univer/VKR/highload_web_server/http-test-suite:/var/www/html:ro --name py_web_server -t py_web_server
# mkfile 2048m test_2048.txt
Требования и методика тестирования (корректности работы) по ссылке: https://github.com/init/http-test-suite
wrk -t12 -c400 -d30s http://localhost/httptest/wikipedia_russia.html
ab -n 100000 -c 100 127.0.0.1/httptest/wikipedia_russia.html
docker run -it -v /tmp/highload_web_server/http-test-suite:/usr/share/nginx/html:ro -p 80:80 nginx