Я ищу многопоточную библиотеку комет-сервера - мне нужно, чтобы async io (используя epoll) работал с пулом потоков (4-8 потоков).Торнадо было бы идеально, если бы он был многопоточным.
Почему многопоточность?Мне нужно обрабатывать и обслуживать данные, которые могут поступать от каждого подключенного пользователя - они могут быть синхронизированы между экземплярами торнадо с использованием базы данных, но даже nosql будет слишком большим замедлением - почти каждый запрос будет заканчиваться записью / обновлением базы данных - что даже при использовании асинхронногоВодители не очень хорошая идея.Я могу хранить все в локальной оперативной памяти, так что это может быть очень быстрым, но должно выполняться на одном процессе, чтобы избежать межпроцессного взаимодействия.Мне не нужно масштабировать - достаточно одной коробки - но она ДОЛЖНА быть быстрой.Некоторые данные будут храниться в MongoDB, но количество монго-запросов будет составлять 5% от обычных запросов.
И важно то, что семафоры (и другие подходы более высокого уровня) не являются для меня ракетостроением, поэтому яне боится синхронизации.
Требования:
- асинхронный ввод
- неблокирование
- тысячи одновременных подключений
- FAST
- базовые функции HTTP (GET, POST, cookie)
- способность обрабатывать запрос асинхронно (делать что-то, асинхронный вызов с обратным вызовом (например, запрос к базе данных), обратный вызов процесса, возвращать данные)
- пул потоков
- C ++ / Java / Python
- простой и легкий
Было бы неплохо также иметь драйвер асинхронного монго
Я посмотрел на Boost ASIO, и он, кажется, способен делать то, что мне нужно - но я хочу сосредоточиться на приложении - не писать обработку запросов http.
Я читал о Tornado (кажется идеальным, но однопоточным), Простой (не уверен, что он может обрабатывать запрос асинхронно и возвращать данные после асинхронного вызова), BOOST ASIO (очень хороший, но слишком низкий уровень)