diff --git a/app/corpora/events.py b/app/corpora/events.py index 7dfbc05b..947f1ace 100644 --- a/app/corpora/events.py +++ b/app/corpora/events.py @@ -5,14 +5,14 @@ from flask import current_app, request from flask_login import login_required from .CQiWrapper.CQiWrapper import CQiWrapper import logging -import time + + +analysis_clients = {} @socketio.on('init_corpus_analysis') @login_required def init_corpus_analysis(corpus_id): - logger = logging.getLogger(__name__) - logger.warning('init_corpus_analysis') ''' TODO: Check if current_user is allowed to subscribe to this ''' socketio.start_background_task(observe_corpus_analysis_connection, current_app._get_current_object(), @@ -24,28 +24,31 @@ def init_corpus_analysis(corpus_id): def recv_query(message): logger = logging.getLogger(__name__) logger.warning(message) + analysis_client = analysis_clients[request.sid] def observe_corpus_analysis_connection(app, corpus_id, session_id): logger = logging.getLogger(__name__) with app.app_context(): - time.sleep(5) # wait for IP of container only for dev corpus = Corpus.query.filter_by(id=corpus_id).first() - logger.warning('IP adress is: {}'.format(corpus.analysis_container_ip)) - cqi_session = CQiWrapper(username='opaque', password='opaque', - host=corpus.analysis_container_ip, port=4877) - cqi_session.connect() - logger.warning(cqi_session.corpus_list_corpora()) + while corpus.status != 'analysing': + db.session.refresh(corpus) + socketio.sleep(3) + analysis_client = CQiWrapper(username='opaque', password='opaque', + host='{}_analysis_container{}'.format(corpus.creator.username, corpus.id), port=4877) + analysis_clients[session_id] = analysis_client + analysis_client.connect() + logger.warning(analysis_client.corpus_list_corpora()) corpus_name = 'CORPUS' result_subcorpus_name = 'Query-results' # should be set by the user somehow query = '"and";' - cqi_session.create_attribute_strings(corpus_name) + analysis_client.create_attribute_strings(corpus_name) logger.warning('Log after create_attribute_strings.') - cqi_session.query_subcorpus(corpus_name, result_subcorpus_name, query) + analysis_client.query_subcorpus(corpus_name, result_subcorpus_name, query) logger.warning('Log after query_subcorpus.') while session_id in connected_sessions: - logger.warning('Run container, run!') + logger.warning(analysis_client.ctrl_ping()) socketio.sleep(3) + analysis_clients.pop(session_id, None) corpus.status = 'stop analysis' db.session.commit() - logger.warning('Stop container, stop!') diff --git a/app/events.py b/app/events.py index b0ac4dc4..aded211f 100644 --- a/app/events.py +++ b/app/events.py @@ -5,7 +5,6 @@ from .decorators import admin_required from .models import User import json import jsonpatch -import logging '''