mirror of
https://github.com/nexus-stc/hyperboria
synced 2024-11-30 15:02:54 +01:00
55 lines
1.8 KiB
Python
55 lines
1.8 KiB
Python
|
import asyncio
|
||
|
|
||
|
import uvloop
|
||
|
from aiopg.sa import create_engine
|
||
|
from idm.api.configs import get_config
|
||
|
from idm.api.daemons.admin_log_reader import AdminLogReader
|
||
|
from idm.api.services.chat_manager import ChatManagerService
|
||
|
from library.aiogrpctools import AioGrpcServer
|
||
|
from library.aiopostgres.pool_holder import AioPostgresPoolHolder
|
||
|
from library.configurator import Configurator
|
||
|
from library.logging import configure_logging
|
||
|
|
||
|
|
||
|
class GrpcServer(AioGrpcServer):
|
||
|
def __init__(self, config: Configurator):
|
||
|
super().__init__(address=config['grpc']['address'], port=config['grpc']['port'])
|
||
|
self.pool_holder = AioPostgresPoolHolder(
|
||
|
fn=create_engine,
|
||
|
database=config['database']['database'],
|
||
|
user=config['database']['username'],
|
||
|
password=config['database']['password'],
|
||
|
host=config['database']['host'],
|
||
|
port=config['database']['port'],
|
||
|
timeout=30,
|
||
|
pool_recycle=60,
|
||
|
maxsize=4,
|
||
|
)
|
||
|
self.admin_log_reader = AdminLogReader(
|
||
|
telegram_config=config['telegram'],
|
||
|
)
|
||
|
self.chat_manager_service = ChatManagerService(
|
||
|
server=self.server,
|
||
|
service_name=config['application']['service_name'],
|
||
|
pool_holder=self.pool_holder,
|
||
|
admin_log_reader=self.admin_log_reader,
|
||
|
)
|
||
|
self.starts.append(self.admin_log_reader)
|
||
|
self.waits.extend([self.chat_manager_service, self.pool_holder])
|
||
|
|
||
|
|
||
|
async def create_app(config: Configurator):
|
||
|
grpc_server = GrpcServer(config)
|
||
|
await grpc_server.start_and_wait()
|
||
|
|
||
|
|
||
|
def main():
|
||
|
uvloop.install()
|
||
|
config = get_config()
|
||
|
configure_logging(config)
|
||
|
asyncio.get_event_loop().run_until_complete(create_app(config))
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
main()
|