1
0
mirror of https://github.com/EDCD/EDMarketConnector.git synced 2025-04-17 17:42:20 +03:00

companion: Implement, and use, asking CAPI thread to close down

This commit is contained in:
Athanasius 2021-08-16 14:20:32 +01:00
parent c5af0a3397
commit 9661d770cb
No known key found for this signature in database
GPG Key ID: AE3E527847057C7D
2 changed files with 17 additions and 0 deletions

View File

@ -1577,6 +1577,10 @@ class AppWindow(object):
logger.info('Unregistering hotkey manager...')
hotkeymgr.unregister()
# Now the CAPI query thread
logger.info('Closing CAPI query thread...')
companion.session.capi_query_close_worker()
# Now the main programmatic input methods
logger.info('Closing dashboard...')
dashboard.close()

View File

@ -21,6 +21,7 @@ import webbrowser
from builtins import object, range, str
from email.utils import parsedate
from os.path import join
from queue import Queue
from typing import TYPE_CHECKING, Any, Dict, List, Mapping, Optional, OrderedDict, TypeVar, Union
import requests
@ -478,6 +479,7 @@ class Session(object):
self.retrying = False # Avoid infinite loop when successful auth / unsuccessful query
logger.info('Starting CAPI queries thread...')
self.capi_query_queue: Queue = Queue()
self.capi_query_thread = threading.Thread(
target=self.capi_query_worker,
daemon=True,
@ -596,11 +598,22 @@ class Session(object):
def capi_query_worker(self, ):
"""Worker thread that performs actual CAPI queries."""
logger.info('CAPI worker thread starting')
while True:
query: Optional[str] = self.capi_query_queue.get()
if not query:
logger.info('Empty queue message, exiting...')
break
logger.trace_if('capi.worker', f'Processing query: {query}')
time.sleep(1)
logger.info('CAPI worker thread DONE')
def capi_query_close_worker(self) -> None:
"""Ask the CAPI query thread to finish."""
self.capi_query_queue.put(None)
def query(self, endpoint: str) -> CAPIData: # noqa: CCR001, C901
"""Perform a query against the specified CAPI endpoint."""
logger.trace_if('capi.query', f'Performing query for endpoint "{endpoint}"')