Move backend init into new CoreProcess
This commit is contained in:
parent
194f0e543e
commit
feda5db67f
@ -1,5 +1,6 @@
|
|||||||
import asyncore
|
import asyncore
|
||||||
import logging
|
import logging
|
||||||
|
from multiprocessing import Queue
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
@ -7,6 +8,7 @@ sys.path.insert(0,
|
|||||||
os.path.abspath(os.path.join(os.path.dirname(__file__), '../')))
|
os.path.abspath(os.path.join(os.path.dirname(__file__), '../')))
|
||||||
|
|
||||||
from mopidy import get_class, settings, SettingsError
|
from mopidy import get_class, settings, SettingsError
|
||||||
|
from mopidy.core import CoreProcess
|
||||||
from mopidy.mpd.server import MpdServer
|
from mopidy.mpd.server import MpdServer
|
||||||
|
|
||||||
logger = logging.getLogger('mopidy')
|
logger = logging.getLogger('mopidy')
|
||||||
@ -17,13 +19,22 @@ def main():
|
|||||||
# multiprocessing branch plan
|
# multiprocessing branch plan
|
||||||
# ---------------------------
|
# ---------------------------
|
||||||
#
|
#
|
||||||
# TODO Init backend in new Process (named core?)
|
|
||||||
# TODO Init MpdHandler from backend/core
|
# TODO Init MpdHandler from backend/core
|
||||||
# TODO Init MpdServer in MainThread or in new Process?
|
# TODO Init MpdServer in MainThread or in new Process?
|
||||||
|
|
||||||
backend = get_class(settings.BACKENDS[0])()
|
main_queue = Queue()
|
||||||
MpdServer(backend=backend)
|
core_queue = Queue()
|
||||||
asyncore.loop()
|
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):
|
def _setup_logging(verbosity_level):
|
||||||
if verbosity_level == 0:
|
if verbosity_level == 0:
|
||||||
|
|||||||
23
mopidy/core.py
Normal file
23
mopidy/core.py
Normal 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'})
|
||||||
Loading…
Reference in New Issue
Block a user