https://github.com/zelflod/highload_web_server
Python web server
https://github.com/zelflod/highload_web_server
asynchronous asyncio event-loop non-blocking python single-threaded web-server
Last synced: 4 months ago
JSON representation
Python web server
- Host: GitHub
- URL: https://github.com/zelflod/highload_web_server
- Owner: zelflod
- Created: 2020-02-21T12:08:10.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2020-03-03T19:19:34.000Z (about 6 years ago)
- Last Synced: 2025-01-11T11:46:15.665Z (about 1 year ago)
- Topics: asynchronous, asyncio, event-loop, non-blocking, python, single-threaded, web-server
- Language: Python
- Homepage:
- Size: 476 KB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## Python web server with non-blocking io
Веб-сервер для отдачи статики с диска
Используется неблокирующий ввод/вывод, кооперативная многозадачность, асинхронное программирование с помощью библиотеки AsyncIO, так как операции в веб-сервере являются IO bound (больше висят попеременно в ожидании ввода/вывода)
Создаются однопоточные процессы `worker` с циклом событий, которые слушают привязанный к `host:ip` сокет и одновременно обрабатывают соединения и запросы.
### Run
```
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
```
##### py_web_serber with 8 CPU use

##### py_web_serber with 2 CPU use

##### nginx with with default (all) CPU use

```
ab -n 100000 -c 100 127.0.0.1/httptest/wikipedia_russia.html
```
##### py_web_server with 8 CPU use

##### nginx with with default (all) CPU use

### Run nginx (to compare performance)
```
docker run -it -v /tmp/highload_web_server/http-test-suite:/usr/share/nginx/html:ro -p 80:80 nginx
```