Обрабатывать вызовы SimpleXMLRPCServer и события Asyncore.dispatchers из одного цикла обработки событий - PullRequest
1 голос
/ 26 октября 2011

Как я могу обрабатывать события Asyncore.dispatcher (s) и SimpleXMLRPCServer из одного и того же цикла обработки событий?

P.S. Я уже знаю, что некоторые из вас могут порекомендовать Twisted для этого, но проблема с Twisted в том, что это немного слишком высокоуровневая библиотека для моих нужд. В частности, я делаю управление потоком UDP путем переопределения метода Asyncore.dispatcher.writable (), который зависит от таймеров. Не уверен, что / как это можно сделать в Twisted.

1 Ответ

1 голос
/ 26 октября 2011

Вы должны использовать Twisted для этого :-).Вы не можете поместить SimpleXMLRPCServer в асинхронный цикл;это синхронный код, который ожидает блокировку.

Управление потоком с помощью Twisted, даже с UDP, легко.Вместо переопределения метода, подобного writable(), ваш DatagramProtocol может вызывать методы, подобные stopReading / stopWriting / startReading / startWriting, в их атрибуте transport.Вы можете увидеть эти методы здесь .

...