Move backend init into new CoreProcess

This commit is contained in:
Stein Magnus Jodal 2010-03-19 22:52:49 +01:00
parent 194f0e543e
commit feda5db67f
2 changed files with 38 additions and 4 deletions

View File

@ -1,5 +1,6 @@
import asyncore
import logging
from multiprocessing import Queue
import os
import sys
@ -7,6 +8,7 @@ sys.path.insert(0,
os.path.abspath(os.path.join(os.path.dirname(__file__), '../')))
from mopidy import get_class, settings, SettingsError
from mopidy.core import CoreProcess
from mopidy.mpd.server import MpdServer
logger = logging.getLogger('mopidy')
@ -17,13 +19,22 @@ def main():
# multiprocessing branch plan
# ---------------------------
#
# TODO Init backend in new Process (named core?)
# TODO Init MpdHandler from backend/core
# TODO Init MpdServer in MainThread or in new Process?
backend = get_class(settings.BACKENDS[0])()
MpdServer(backend=backend)
asyncore.loop()
main_queue = Queue()
core_queue = Queue()
server_queue = Queue()
core = CoreProcess(core_queue=core_queue,
main_queue=main_queue, server_queue=server_queue)
core.start()
while True:
message = main_queue.get()
if message['command'] == 'core_ready':
MpdServer(backend=None)
asyncore.loop()
else:
logger.warning(u'Cannot handle message: %s', message)
def _setup_logging(verbosity_level):
if verbosity_level == 0:

23
mopidy/core.py Normal file
View File

@ -0,0 +1,23 @@
import logging
from multiprocessing import Process, Queue
from mopidy import get_class, settings
logger = logging.getLogger('mopidy.core')
class CoreProcess(Process):
def __init__(self, core_queue=None, main_queue=None, server_queue=None):
Process.__init__(self)
self.queue = core_queue
self.main_queue = main_queue
self.server_queue = server_queue
def run(self):
self._setup()
while True:
message = self.queue.get()
# TODO Do something with the message
def _setup(self):
self.backend = get_class(settings.BACKENDS[0])()
self.main_queue.put({'command': 'core_ready'})