Events: connect and disconnect

This commit is contained in:
Ivan Vazhenin
2023-09-06 18:46:15 +03:00
parent 5506e35e3b
commit ed58bacd12
4 changed files with 21 additions and 4 deletions

View File

@@ -1,5 +1,4 @@
# coding: utf-8
import json
import logging
import os
@@ -263,6 +262,8 @@ class TCPWorker(threading.Thread):
if ex.send_error:
self.send_data({'auth_error': True})
self.stop_event.set()
if self.is_incoming:
self.bnd_connected(self.connected_id)
while not self.stop_event.is_set():
try:
@@ -273,6 +274,8 @@ class TCPWorker(threading.Thread):
self.in_q.put(self.parcel)
except Exception as exc:
log.exception('Unexpected error: %s', exc)
if self.is_incoming:
self.bnd_disconnected(self.connected_id)
self.socket.close()
log.info('%s - Bye!', self.name)
@@ -608,3 +611,17 @@ class TCPWorker(threading.Thread):
self.send_data({'notice': True,
'parcel_id': self.parcel.id,
'parcel_state': self.parcel.state})
def bnd_connected(self, bnd_name: str):
s = ServerProxy(settings.auth_provider)
try:
return s.bnd_connected(bnd_name)
except Exception:
raise socket.error('Authentication provider not available')
def bnd_disconnected(self, bnd_name: str):
s = ServerProxy(settings.auth_provider)
try:
return s.bnd_disconnected(bnd_name)
except Exception:
raise socket.error('Authentication provider not available')

View File

@@ -211,7 +211,7 @@ class XMLRPCMethods(object):
def queueList(self):
return {'success': True,
'rows': parcelqueue.manager.queue_list()}
'rows': list(parcelqueue.manager.queue_list())}
def deleteReplicationsParcels(self, replications_recipients, replications_ids):
replications_recipients = ['tcp://%s' % recipient for recipient in replications_recipients]

View File

@@ -1,3 +1,3 @@
source venv/bin/activate
python3 enserver/enserver.py --id bnd127 --db-host 10.10.8.83 --db-port 32101 --storage store --auth-provider http://10.10.8.81:9000/ --debug http://10.10.8.81:9000/
python3 enserver/enserver.py --id bnd127 --db-host 10.10.8.83 --db-port 32101 --storage store --auth-provider http://10.10.8.70:9000/ --debug http://10.10.8.70:9000/
# --debug --port=7001 --pidfile=/tmp/enserver.pid --logfile=/var/log/enserver.log --id=prilvbox --address=enserv --storage=/share/store/enserver --db-host=10.10.8.83 --db-port=32101 --host=10.10.78.40 --db-user=postgres --db-passwd=Root12345678 --auth-provider=http://10.10.8.81:9000/ --replication-provider=http://10.10.8.81:9000/ http://10.10.8.81:9000/ http://10.10.8.81:9000/

View File

@@ -1,3 +1,3 @@
source venv/bin/activate
python3 enserver/enserver.py --id bnd128 --db-host 10.10.8.83 --db-port 32101 --db-name db128 --storage store1 --http-port 7002 --tcp-port 7003 --host 10.10.8.81 --port 7001 --auth-provider http://10.10.8.81:9000/ --pidfile /tmp/enserver1.pid --logfile enserver1.log --debug http://10.10.8.81:9000/
python3 enserver/enserver.py --id bnd128 --db-host 10.10.8.83 --db-port 32101 --db-name db128 --storage store1 --http-port 7002 --tcp-port 7003 --host 10.10.8.70 --port 7001 --auth-provider http://10.10.8.70:9000/ --pidfile /tmp/enserver1.pid --logfile enserver1.log --debug http://10.10.8.70:9000/
# --debug --port=7001 --pidfile=/tmp/enserver.pid --logfile=/var/log/enserver.log --id=prilvbox --address=enserv --storage=/share/store/enserver --db-host=10.10.8.83 --db-port=32101 --host=10.10.78.40 --db-user=postgres --db-passwd=Root12345678 --auth-provider=http://10.10.8.81:9000/ --replication-provider=http://10.10.8.81:9000/ http://10.10.8.81:9000/ http://10.10.8.81:9000/