mirror of
https://github.com/nexus-stc/hyperboria
synced 2024-12-26 03:25:49 +01:00
69 lines
2.8 KiB
Python
69 lines
2.8 KiB
Python
|
import asyncio
|
||
|
|
||
|
import uvloop
|
||
|
from library.aiogrpctools import AioGrpcServer
|
||
|
from library.aiopostgres import AioPostgresPoolHolder
|
||
|
from library.configurator import Configurator
|
||
|
from library.logging import configure_logging
|
||
|
from library.telegram.base import BaseTelegramClient
|
||
|
from nexus.hub.configs import get_config
|
||
|
from nexus.hub.services.delivery import DeliveryService
|
||
|
from nexus.hub.services.submitter import SubmitterService
|
||
|
|
||
|
|
||
|
class GrpcServer(AioGrpcServer):
|
||
|
def __init__(self, config: Configurator):
|
||
|
super().__init__(address=config['grpc']['address'], port=config['grpc']['port'])
|
||
|
self.pool_holder = AioPostgresPoolHolder(
|
||
|
dsn=f'dbname={config["database"]["database"]} '
|
||
|
f'user={config["database"]["username"]} '
|
||
|
f'password={config["database"]["password"]} '
|
||
|
f'host={config["database"]["host"]}',
|
||
|
timeout=30,
|
||
|
pool_recycle=60,
|
||
|
maxsize=4,
|
||
|
)
|
||
|
self.telegram_client = BaseTelegramClient(
|
||
|
app_id=config['telegram']['app_id'],
|
||
|
app_hash=config['telegram']['app_hash'],
|
||
|
bot_token=config['telegram']['bot_token'],
|
||
|
database=config['telegram'].get('database'),
|
||
|
mtproxy=config['telegram'].get('mtproxy'),
|
||
|
)
|
||
|
self.delivery_service = DeliveryService(
|
||
|
server=self.server,
|
||
|
service_name=config['application']['service_name'],
|
||
|
bot_external_name=config['telegram']['bot_external_name'],
|
||
|
ipfs_config=config['ipfs'],
|
||
|
is_sharience_enabled=config['application']['is_sharience_enabled'],
|
||
|
maintenance_picture_url=config['application'].get('maintenance_picture_url', ''),
|
||
|
pool_holder=self.pool_holder,
|
||
|
pylon_config=config['pylon'],
|
||
|
should_store_hashes=config['application']['should_store_hashes'],
|
||
|
should_use_telegram_file_id=config['telegram']['should_use_telegram_file_id'],
|
||
|
telegram_client=self.telegram_client,
|
||
|
)
|
||
|
self.submitter_service = SubmitterService(
|
||
|
server=self.server,
|
||
|
service_name=config['application']['service_name'],
|
||
|
bot_external_name=config['telegram']['bot_external_name'],
|
||
|
grobid_config=config['grobid'],
|
||
|
ipfs_config=config['ipfs'],
|
||
|
meta_api_config=config['meta_api'],
|
||
|
telegram_client=self.telegram_client,
|
||
|
)
|
||
|
self.waits.append(self.pool_holder)
|
||
|
self.starts.extend([self.telegram_client, self.delivery_service, self.submitter_service])
|
||
|
|
||
|
|
||
|
def main():
|
||
|
config = get_config()
|
||
|
configure_logging(config)
|
||
|
uvloop.install()
|
||
|
grpc_server = GrpcServer(config)
|
||
|
asyncio.get_event_loop().run_until_complete(grpc_server.start_and_wait())
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
main()
|