Управление несколькими Скрученными соединениями клиента

В то время как я полагаю, что @spickermann отвечают на лучший подход, я предложил бы фиксацию для Вас метод.

Перемещение return внешняя сторона map цикл, но использование each вместо этого, так как Вы определили пустые массивы для сбора элементов. Тогда возвратите эти два сортированных массива:

def size_splitter(array, size)
  ary1 = []
  ary2 = []
  array.each do |word|
    word.length == size ? ary1.push(word) : ary2.push(word)
  end
  return [ary1.sort, ary2.sort]
end

ary = %w|Tom Bob Greg Sam Sonny Thomas|

size_splitter(ary, 3)
#=> [["Bob", "Sam", "Tom"], ["Greg", "Sonny", "Thomas"]]
6
задан Tom 2 September 2009 в 03:45
поделиться

2 ответа

Лучший вариант - это просто сделать очевидную вещь здесь. Нет цикла или повторяющегося синхронизированного вызова; просто имейте обработчики, которые делают правильные вещи.

Держите под рукой центральный объект управления соединениями и заставляйте методы обработки событий передавать ему информацию, необходимую для продолжения работы. Когда он запустится, сделайте 5 исходящих подключений. Следите за тем, сколько из них выполняется, ведите список с ними в нем. При успешном подключении (в connectionMade ) обновите список, чтобы запомнить новое состояние подключения. Когда соединение завершается (в connectionLost ), сообщите диспетчеру соединений; его ответ должен заключаться в том, чтобы удалить это соединение и установить новое соединение в другом месте. Посередине,

4
ответ дан 17 December 2019 в 02:31
поделиться

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

3
ответ дан 17 December 2019 в 02:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: