ogn-python/ogn/gateway/manage.py

58 wiersze
1.6 KiB
Python
Czysty Zwykły widok Historia

import logging
2015-11-19 22:17:12 +00:00
from manager import Manager
2017-10-03 11:31:24 +00:00
from ogn.client import AprsClient
2018-09-03 19:44:32 +00:00
from ogn.gateway.process import string_to_message
from datetime import datetime
2018-10-21 15:34:03 +00:00
from ogn.gateway.process_tools import DummyMerger, Converter, DbSaver
from ogn.commands.dbutils import session
manager = Manager()
logging_formatstr = '%(asctime)s - %(levelname).4s - %(name)s - %(message)s'
log_levels = ['CRITICAL', 'ERROR', 'WARNING', 'INFO', 'DEBUG']
2015-11-29 20:51:23 +00:00
2018-09-03 19:44:32 +00:00
# Build the processing pipeline
2018-10-21 15:34:03 +00:00
saver = DbSaver(session=session)
2018-09-03 19:44:32 +00:00
converter = Converter(callback=saver)
merger = DummyMerger(callback=converter)
def asdf(raw_string):
message = string_to_message(raw_string, reference_date=datetime.utcnow())
if message is not None:
merger.add_message(message)
else:
print(message)
2015-11-15 11:10:20 +00:00
@manager.command
def run(aprs_user='anon-dev', logfile='main.log', loglevel='INFO'):
"""Run the aprs client."""
2015-11-29 20:51:23 +00:00
# User input validation
2015-11-22 20:11:55 +00:00
if len(aprs_user) < 3 or len(aprs_user) > 9:
print('aprs_user must be a string of 3-9 characters.')
2015-11-22 20:11:55 +00:00
return
if loglevel not in log_levels:
print('loglevel must be an element of {}.'.format(log_levels))
return
# Enable logging
log_handlers = [logging.StreamHandler()]
if logfile:
log_handlers.append(logging.FileHandler(logfile))
logging.basicConfig(format=logging_formatstr, level=loglevel, handlers=log_handlers)
print('Start ogn gateway')
client = AprsClient(aprs_user)
client.connect()
try:
2018-09-03 19:44:32 +00:00
client.run(callback=asdf, autoreconnect=True)
except KeyboardInterrupt:
print('\nStop ogn gateway')
2018-09-03 19:44:32 +00:00
merger.flush()
client.disconnect()
logging.shutdown()