Python / Twisted - Отправка на определенный объект сокета?

StackOverflow https://stackoverflow.com/questions/460068

Вопрос

У меня есть процесс "менеджер" на узле и несколько рабочих процессов.Менеджер - это фактический сервер, на котором хранятся все подключения к клиентам.Менеджер принимает все входящие пакеты и помещает их в очередь, а затем рабочие процессы извлекают пакеты из очереди, обрабатывают их и генерируют результат.Они отправляют результат обратно менеджеру (помещая их в другую очередь, которая считывается менеджером), но вот тут я и застреваю:как мне отправить результат в определенный сокет?Когда имеешь дело с обработкой пакетов в одном процессе, это легко, потому что, когда ты получаешь пакет, ты можешь ответить на него, просто взяв объект "транспорт" в контексте.Но как бы мне сделать это с помощью метода, который я использую?

Это было полезно?

Решение

Похоже, вам может потребоваться сохранить ссылку на транспорт (или протокол) вместе с байтами, которые только что поступили по этому протоколу, в вашем объекте 'event'.Таким образом, ответы, пришедшие по соединению, отправляются по тому же соединению.

Если что-то не нужно обрабатывать последовательно, возможно, вам следует подумать о настройке функторов, которые могут обрабатывать данные параллельно, чтобы устранить необходимость в постановке в очередь.Просто имейте в виду, что вам нужно будет защитить критические разделы вашего кода.

Редактировать:Судя по вашему другому вопросу об оценке дизайна вашего сервера, может показаться, что параллельная обработка может быть невозможна в вашей ситуации, поэтому мое первое предложение остается в силе.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top