Egor
скажем так, 13 стримов грузят ядро на 80%
Egor
вот от этого можно считать нагрузку
Tishka17
Эээ. 13 стримов?
Tishka17
А клиентов сколько?
Tishka17
Я не знаю что такое стрим
Egor
так
Egor
давайте не будем путаться
Egor
еще раз
Tishka17
И как у тебя спланк и rethinkdb смешались
Tishka17
Я так понял, спланк - это что-то типа хадупа?
Egor
есть "стрим" - это функция в которой запускается бесконечный цикл, каждая итерация опрашивает спланк, и отправляет сообщение по сокетио
Egor
Tishka17
Ээ
Alex
ээээ
Alex
вот точно
Alex
и где тут у нас CPU bound
Tishka17
Ты уверен, что вообще те технологии используешь, которые нужны?
Alex
инахуа нам мультипроцессинг?
Alex
Tishka17
13 стримов на сколько клиентов?
Egor
Egor
стримы отдаются на одну вебморду
Tishka17
Egor
скажем так там чето типа продвинутого дашбординга
Tishka17
А остальное - нет
Tishka17
Стримы - это что-то типа топиков в кафке?
Tishka17
и я все ещё не понимаю, откуда тут CPU-bound
Egor
на клиенте (то есть в браузере) дашборда с 13 окошками, каждое из которых ловит сообщение по сокетио в своем неймспейсе
Egor
Alex
т.е. клиент у нас 1
Egor
я конкретно описал чуть выше что в данном случае является стримом
Egor
т.е. клиент у нас 1
ну допустим да, Одна страница с 13 компонентами, каждый из которых ловит сокетио по своему неймспейсу
Tishka17
Egor
Tishka17
Egor
рецинк тут вообще для фронта больше
Alex
ок. то есть 1 клиент, 13 сокетио подключений., которые занимаются IO
Tishka17
итого, rethink db выкинули. Есть поллинг спланка
Egor
и для тоого чтобы можно было новую задачу для спланка накинуть с фронта в реальном времени
Egor
Egor
Tishka17
так
Tishka17
а CPU тут кто ест?
Tishka17
спланк?
Tishka17
или поллинг спланка?
Alex
так еще раз, что мешает запустить несколько инстансов фласка?
Alex
и разруливать сверху nginx \ gunicorn
Egor
а CPU тут кто ест?
спланк вообще на отдельном серваке, цпу на мой взгляд жрет поллинг + отправка сообщения по сокетио. Итерация ради теста сейчас занимает 1 секунду
Egor
ну будет 2-3
Tishka17
Alex
я не совсем понимаю что ты собрался делать в мультипроцессинге. крутить бесконечные IO лупы?
Tishka17
а параллелить ты что тут собрался?
Egor
соединение там нормальное
Сыктывкариум
Господа, такой вопро.
Надо поднять сервер, что бы он отдавал пару файлов.
Сделал на HTTPServer.
В BaseHTTPRequestHandler в do_GET есть такой код:
file_path = curdir + sep + file_name
f = open(file_path, 'rb')
self.send_response(200)
self.send_header('Content-Type', 'application/octet-stream')
self.send_header('Content-Length', path.getsize(file_name))
self.send_header('Content-Disposition', 'attachment; filename="'+file_name+'"')
self.end_headers()
self.wfile.write(f.read())
f.close()
проверил на маленьком файле (2 мб) - норм работает.
Попробовал отдать 50 мб - браузер пишет, что соединение оборвано.
Куда копать? Или может есть альтернатива HttpServer? мне надо по расписанию запустить сервак, что бы клиент скачал 2 файла, а потом вырубить сервак, т.е. надо отловить ГЕТ-запрос определённый и выключить сервер.
Egor
они должны запускаться параллельно, оно так и работало на уровне потоков, но было ограничено 1 ядром
Alex
Egor
а я хочу чтобы при создании такого "стрима" запускался 1 процесс, а не 1 поток
Tishka17
Egor
и тогда нагрузка будет размазываться уже операционной системой по сути
Alex
Tishka17
да откуда тут нагрузка?
Tishka17
Господа, такой вопро.
Надо поднять сервер, что бы он отдавал пару файлов.
Сделал на HTTPServer.
В BaseHTTPRequestHandler в do_GET есть такой код:
file_path = curdir + sep + file_name
f = open(file_path, 'rb')
self.send_response(200)
self.send_header('Content-Type', 'application/octet-stream')
self.send_header('Content-Length', path.getsize(file_name))
self.send_header('Content-Disposition', 'attachment; filename="'+file_name+'"')
self.end_headers()
self.wfile.write(f.read())
f.close()
проверил на маленьком файле (2 мб) - норм работает.
Попробовал отдать 50 мб - браузер пишет, что соединение оборвано.
Куда копать? Или может есть альтернатива HttpServer? мне надо по расписанию запустить сервак, что бы клиент скачал 2 файла, а потом вырубить сервак, т.е. надо отловить ГЕТ-запрос определённый и выключить сервер.
а почему нельзя было взять nginx?
Egor
ну я не особо силен в запуске нескольких воркеров для фласка
Alex
Alex
Сыктывкариум
а почему нельзя было взять nginx?
Ради двух файлов поднимать нджинкс?
В принципе ничего, но суть в том, что после того, как клиент скачает файлы и пошлёт нужный гет серверу, сервер вырубится и оповестит админа, что файлы были скачаны
Tishka17
Alex
Alex
“поднимать nginx"
Alex
охренеть как сложно
Egor
Tishka17