forked from LBRYCommunity/lbry-sdk
Daemon.from_config
This commit is contained in:
parent
f26aadbd44
commit
a96ceba6f5
1 changed files with 22 additions and 10 deletions
|
@ -10,9 +10,11 @@ from aiohttp.web import Application, AppRunner, WebSocketResponse, TCPSite, Resp
|
||||||
from aiohttp.http_websocket import WSMsgType, WSCloseCode
|
from aiohttp.http_websocket import WSMsgType, WSCloseCode
|
||||||
|
|
||||||
from lbry.service.json_encoder import JSONResponseEncoder
|
from lbry.service.json_encoder import JSONResponseEncoder
|
||||||
|
from lbry.blockchain.ledger import Ledger
|
||||||
from lbry.service.base import Service
|
from lbry.service.base import Service
|
||||||
from lbry.service.api import API
|
from lbry.service.api import API
|
||||||
from lbry.console import Console
|
from lbry.service.full_node import FullNode
|
||||||
|
from lbry.console import Console, Advanced as AdvancedConsole, Basic as BasicConsole
|
||||||
|
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
|
@ -72,7 +74,8 @@ class Daemon:
|
||||||
Mostly connects API to aiohttp stuff.
|
Mostly connects API to aiohttp stuff.
|
||||||
Handles starting and stopping API
|
Handles starting and stopping API
|
||||||
"""
|
"""
|
||||||
def __init__(self, service: Service, console: Console):
|
def __init__(self, loop: asyncio.AbstractEventLoop, service: Service, console: Console):
|
||||||
|
self._loop = loop
|
||||||
self.service = service
|
self.service = service
|
||||||
self.conf = service.conf
|
self.conf = service.conf
|
||||||
self.console = console
|
self.console = console
|
||||||
|
@ -91,22 +94,31 @@ class Daemon:
|
||||||
self.app.on_shutdown.append(self.on_shutdown)
|
self.app.on_shutdown.append(self.on_shutdown)
|
||||||
self.runner = AppRunner(self.app)
|
self.runner = AppRunner(self.app)
|
||||||
|
|
||||||
def run(self):
|
@classmethod
|
||||||
|
def from_config(cls, conf):
|
||||||
loop = asyncio.new_event_loop()
|
loop = asyncio.new_event_loop()
|
||||||
|
service = FullNode(Ledger(conf))
|
||||||
|
if conf.console == "advanced":
|
||||||
|
console = AdvancedConsole(service)
|
||||||
|
else:
|
||||||
|
console = BasicConsole(service)
|
||||||
|
return cls(loop, service, console)
|
||||||
|
|
||||||
|
def run(self):
|
||||||
for sig in (signal.SIGHUP, signal.SIGTERM, signal.SIGINT):
|
for sig in (signal.SIGHUP, signal.SIGTERM, signal.SIGINT):
|
||||||
loop.add_signal_handler(sig, loop.stop)
|
self._loop.add_signal_handler(sig, self._loop.stop)
|
||||||
try:
|
try:
|
||||||
loop.run_until_complete(self.start())
|
self._loop.run_until_complete(self.start())
|
||||||
loop.run_forever()
|
self._loop.run_forever()
|
||||||
finally:
|
finally:
|
||||||
try:
|
try:
|
||||||
loop.run_until_complete(self.stop())
|
self._loop.run_until_complete(self.stop())
|
||||||
finally:
|
finally:
|
||||||
try:
|
try:
|
||||||
_cancel_all_tasks(loop)
|
_cancel_all_tasks(self._loop)
|
||||||
loop.run_until_complete(loop.shutdown_asyncgens())
|
self._loop.run_until_complete(self._loop.shutdown_asyncgens())
|
||||||
finally:
|
finally:
|
||||||
loop.close()
|
self._loop.close()
|
||||||
|
|
||||||
async def start(self):
|
async def start(self):
|
||||||
self.console.starting()
|
self.console.starting()
|
||||||
|
|
Loading…
Reference in a new issue