отдельный поток для каждого соединения? - PullRequest
2 голосов
/ 27 февраля 2012

В настоящее время я разрабатываю витой проект, который устанавливает соединение с другим источником (basic.lineReceiver) для каждого клиента, подключающегося к серверу.

цепочка ответов должна выглядеть следующим образом:

клиент подключается -> идентификатор клиентских сообщений к серверу -> сервер устанавливает пользовательское соединение с источником -> сервер непрерывно создает данные с входящими сообщениями из источника ->Сервер непрерывно передает данные соответствующему клиенту

источник: клиент - отношение 1: 1

Я предполагаю, что каждое исходное соединение отправляется в новый поток и прослушивается входящие сообщения.очень похоже на:

Неограниченное производство контента в отдельном потоке для всех соединений?

но как бы я отправлял каждое новое соединение с реактором в новом потоке вскручено после того, как оно было запущено?

1 Ответ

1 голос
/ 27 февраля 2012

Нитки здесь - красная сельдь. То, что вы хотите, это прокси много (или, по крайней мере, несколько) соединений. Вы можете сделать это разными способами, но если вы собираетесь делать это с Twisted, вы можете также пропустить способы, которые связаны с потоками.

Взгляните на существующего экспедитора в Twisted , чтобы получить некоторые идеи о том, как это можно сделать.

Общая идея здесь заключается в том, что вы можете использовать Twisted для настройки исходящего соединения, а затем получать обратные вызовы с данными каждый раз, когда данные считываются из этого исходящего соединения. Затем вы можете отправить эти данные обратно через ваше входящее соединение. Twisted обрабатывает ввод-вывод для вас и вызывает весь ваш код в одном потоке («поток реактора»), поэтому нет необходимости в дополнительных потоках.

...