Wqw
Egor
при каждой итерации дата коллектор опрашивается, забирается N последних значений, и отдается по вебсокетам
Tishka17
Tishka17
Оу
Egor
короче юзаю splunk python sdk для того чтобы работать с результатами поиска
Egor
не совсем дата коллектор, но и оно тоже:)
Denis
Tishka17
Так, а как ты гарантируешь, что у тебя два воркера не получат одно и то же сообщение?
Wqw
Tishka17
Denis
ImageAi
Похоже, там керас под капотом
Denis
Надо искать датасеты с мячами в воротах и дообучать, либо искать одновременно мяч и ворота
Egor
Или у тебя выборка по условиям?
при запуске приложения запускается поток, внутри которого определяется список id задач, + запускается стрим из rethinkdb - когда задача добавляется с фронта, sid падает в список.
Для каждого из этих id запускается таска. То есть уже на старте у них разных sid. Даже если поисковый запрос одинаковый.
соответственно внутри стрима опрос по sdk идет относительно униикального id, по вебсокетам шлется в уникальный неймспейс (тоже по id)
Egor
на данный момент совсем не понимаю почему для одной и той же таски, которая по ходу выполнения кода точно должна запуститься только 1 раз, выделяется ForkPoolWorker-1 и ForkPoolWorker-2
Tishka17
Я не понимаю, а зачем тут селери
Egor
а для остальных таких же только по одному (воркеру?)
Tishka17
У тебя несколько процессов, которые обслуживают свои таск ид
Tishka17
Egor
Daniil
Daniil
и другие части других футболистов
Egor
Эээ. В смысле?
для того чтобы flask_socketio юзать из-пот Тредов, эти треды в принципе должны быть отравлены гевентом, или гринлетом. То есть родные питонопотоки уже по умолчанию в пролете
Egor
собственно gunicorn с гевент воркером нужно запускать, или прописывать манки патчинг
Egor
иначе сообщения не шлются
Egor
так вот, все это ограничено лишь потоками. Если инкапсулировать функцию в процесс, из нее эмиты так же не будут работать
Amaro
Tishka17
Ну как минимум, всегда можно через nginx балансировать
Tishka17
Tishka17
Ять
Tishka17
У тебя сообщения внутри одного процесса что ли только?
Tishka17
То есть нельзя запустить 10 фласковых процессов на 2 серверах и ещё 10 сокетио на третьем сервере и отправлять сообщения?
Egor
Egor
теоретически возможно все
Tishka17
А что тогда за тема со стримами rethinkdb?
Egor
но я не вижу смысла юзать 2 сервера если у меня в одном из 8 ядер юзается только одно на 90%)
Alex
Egor
Tishka17
Egor
у меня вот есть виртуалка с 8 ядрами под это дело
Alex
да и даже про виртуалки
Egor
и через селери кстати нагрузка таки размазывается
Denis
А зачем тут гевент, можно же на асинке и веб, и сокеты
Alex
ну естественно
Egor
только работает оно как-то не совсем очевидно
Tishka17
Суть в том, что процессы должны быть связаны через какое-то апи
Tishka17
Например, очередь сообщений
Egor
Tishka17
Я просто не знаю что такое стрим rethinkdb, поэтому и думал что это очередь
Tishka17
Egor
по идее их сельдерей через редис внутри себя и связывает
Tishka17
Возьми просто очередь сообщегий
Egor
Egor
попробую от нее уже плясать
Alex
Я ж уже вчера говорил python-socketio
Alex
умеет в асинхронный режим
Egor
ну так flask_socketio тоже работает асинхронно
Egor
за счет gevent
Egor
там под капотом все тот же python-socketio
Alex
я предлагаю взять asyncio
Alex
хотя я вообще не уверен что тебе нужна асинхронность, если у тебя каждый клиент запускает стрим.
Alex
Alex
у gevent действительно проблема с мультипроцессингом из-за агрессивного манкипатчинга
Tishka17
Так, а сколько у тебя клиентов?
Alex
Tishka17
Чем мы вообще пытаемся cpu занять?
Tishka17
Рассылкой до клиентов?
Tishka17
Их там тысячи?