Remove plan for server in own process. Remove redundant blocking of server until CoreProcess is ready.

This commit is contained in:
Stein Magnus Jodal 2010-03-20 01:06:22 +01:00
parent 1faecdf496
commit e5be3ea640
2 changed files with 9 additions and 27 deletions

View File

@ -1,6 +1,6 @@
import asyncore
import logging
from multiprocessing import Queue
import multiprocessing
import os
import sys
@ -9,31 +9,16 @@ sys.path.insert(0,
from mopidy import get_class, settings, SettingsError
from mopidy.core import CoreProcess
from mopidy.mpd.server import MpdServer
logger = logging.getLogger('mopidy')
logger = logging.getLogger('mopidy.main')
def main():
_setup_logging(2)
# multiprocessing branch plan
# ---------------------------
#
# TODO Init MpdServer in MainThread or in new Process?
main_queue = Queue()
core_queue = Queue()
server_queue = Queue()
core = CoreProcess(core_queue=core_queue,
main_queue=main_queue, server_queue=server_queue)
core_queue = multiprocessing.Queue()
core = CoreProcess(core_queue)
core.start()
while True:
message = main_queue.get()
if message['command'] == 'core_ready':
MpdServer(core_queue=core_queue)
asyncore.loop()
else:
logger.warning(u'Cannot handle message: %s', message)
get_class(settings.SERVER)(core_queue=core_queue)
asyncore.loop()
def _setup_logging(verbosity_level):
if verbosity_level == 0:

View File

@ -6,18 +6,15 @@ from mopidy import get_class, settings, unpickle_connection
logger = logging.getLogger('mopidy.core')
class CoreProcess(multiprocessing.Process):
def __init__(self, core_queue=None, main_queue=None, server_queue=None):
def __init__(self, core_queue):
multiprocessing.Process.__init__(self)
self.queue = core_queue
self.main_queue = main_queue
self.server_queue = server_queue
self.core_queue = core_queue
def run(self):
backend = get_class(settings.BACKENDS[0])()
frontend = get_class(settings.FRONTEND)(backend=backend)
self.main_queue.put({'command': 'core_ready'})
while True:
message = self.queue.get()
message = self.core_queue.get()
if message['command'] == 'mpd_request':
response = frontend.handle_request(message['request'])
connection = unpickle_connection(message['reply_to'])