mirror of
https://github.com/cryptosharks131/lndg.git
synced 2026-08-20 13:27:52 +02:00
55 lines
No EOL
2 KiB
Python
55 lines
No EOL
2 KiB
Python
import django, multiprocessing
|
|
from gui.lnd_deps import lightning_pb2_grpc as lnrpc
|
|
from gui.lnd_deps.lnd_connect import lnd_connect
|
|
from os import environ
|
|
from time import sleep
|
|
environ['DJANGO_SETTINGS_MODULE'] = 'lndg.settings'
|
|
django.setup()
|
|
from gui.models import LocalSettings
|
|
from trade import serve_trades
|
|
import logging
|
|
logger = logging.getLogger('[P2P]')
|
|
|
|
def trade():
|
|
stub = lnrpc.LightningStub(lnd_connect())
|
|
serve_trades(stub)
|
|
|
|
def check_setting():
|
|
if LocalSettings.objects.filter(key='LND-ServeTrades').exists():
|
|
return int(LocalSettings.objects.filter(key='LND-ServeTrades')[0].value)
|
|
else:
|
|
LocalSettings(key='LND-ServeTrades', value='0').save()
|
|
return 0
|
|
|
|
def main():
|
|
while True:
|
|
current_value = None
|
|
try:
|
|
while True:
|
|
db_value = check_setting()
|
|
if current_value != db_value:
|
|
if db_value == 1:
|
|
logger.info('Starting the p2p service...')
|
|
django.db.connections.close_all()
|
|
p2p_thread = multiprocessing.Process(target=trade)
|
|
p2p_thread.start()
|
|
else:
|
|
if 'p2p_thread' in locals() and p2p_thread.is_alive():
|
|
logger.info('Stopping the p2p service...')
|
|
p2p_thread.terminate()
|
|
current_value = db_value
|
|
sleep(2) # polling interval
|
|
except Exception as e:
|
|
logger.error(f'Error running p2p service: {str(e)}')
|
|
try:
|
|
django.db.connections.close_all()
|
|
except Exception as db_err:
|
|
logger.error(f"Error closing database connections: {str(db_err)}")
|
|
finally:
|
|
logger.info('Removing any remaining processes...')
|
|
if 'p2p_thread' in locals() and p2p_thread.is_alive():
|
|
p2p_thread.terminate()
|
|
sleep(20)
|
|
|
|
if __name__ == '__main__':
|
|
main() |