потоковый TCP-сервер Python с RPC - PullRequest
0 голосов
/ 17 июня 2010

Я написал небольшой потоковый mp3-сервер на python. Пока что все, что он делает - это принимает соединение ServerSocket и начинает потоковую передачу всех mp3-данных из своей очереди в запрос с помощью socket.send (). Я реализовал это для потоковых ледяных метаданных, поэтому имя воспроизводимой песни отображается в клиенте.

Я хотел бы добавить управление списком воспроизведения на сервер, чтобы я мог манипулировать списком воспроизведения работающего сервера. У меня есть смутное представление о том, что xmlrpclib подходит для этого, но я запутался в двух вещах:

  1. Возможно / желательно ли интегрировать ICY и XMLRPC на одном сервере и одном порту.

  2. Как разделить состояние между потоком потока и списком воспроизведения и манипулировать им через xmlrpc.

1 Ответ

0 голосов
/ 17 июня 2010

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

ICY и HTTP очень похожи, и если вы уже внедрили ICY поверх SocketServer, вы, вероятно, могли бы расширить BaseHTTPServer.BaseHTTPRequestHandler для ответа на запросы ICY и HTTP на один и тот же порт.Взгляните на стандартный код библиотеки для метода BaseHTTPRequestHandler.parse_request () и подумайте о том, как переопределить его в подклассе для разделения личности.

Также, когда вы хотитеобрабатывать несколько одновременных запросов, используя эти классы, взгляните на классы SocketServer mixin .

...