mirror of
https://github.com/EDCD/EDMarketConnector.git
synced 2025-06-08 03:12:33 +03:00
CAPI: EDMC - converted to the queue request/response format
This commit is contained in:
parent
3df688ecd4
commit
332d4cf975
35
EDMC.py
35
EDMC.py
@ -6,9 +6,11 @@ import argparse
|
|||||||
import json
|
import json
|
||||||
import locale
|
import locale
|
||||||
import os
|
import os
|
||||||
|
import queue
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
from os.path import getmtime, join
|
from os.path import getmtime, join
|
||||||
|
from queue import Queue
|
||||||
from time import sleep, time
|
from time import sleep, time
|
||||||
from typing import TYPE_CHECKING, Any, List, Optional
|
from typing import TYPE_CHECKING, Any, List, Optional
|
||||||
|
|
||||||
@ -270,8 +272,39 @@ sys.path: {sys.path}'''
|
|||||||
|
|
||||||
companion.session.login(monitor.cmdr, monitor.is_beta)
|
companion.session.login(monitor.cmdr, monitor.is_beta)
|
||||||
|
|
||||||
|
# Set up the response queue
|
||||||
|
capi_response_queue: Queue = Queue()
|
||||||
|
companion.session.set_capi_response_queue(capi_response_queue)
|
||||||
|
|
||||||
|
# Initiate CAPI queries
|
||||||
querytime = int(time())
|
querytime = int(time())
|
||||||
data = companion.session.station()
|
companion.session.station(query_time=querytime)
|
||||||
|
|
||||||
|
# Wait for the response
|
||||||
|
_capi_request_timeout = 60
|
||||||
|
try:
|
||||||
|
capi_response = capi_response_queue.get(block=True, timeout=_capi_request_timeout)
|
||||||
|
|
||||||
|
except queue.Empty:
|
||||||
|
logger.error(f'CAPI requests timed out after {_capi_request_timeout} seconds')
|
||||||
|
sys.exit(EXIT_SERVER)
|
||||||
|
|
||||||
|
else:
|
||||||
|
if isinstance(capi_response, companion.CAPIFailedRequest):
|
||||||
|
logger.trace_if('capi.worker', f'Failed Request: {capi_response.message}')
|
||||||
|
if capi_response.exception:
|
||||||
|
raise capi_response.exception
|
||||||
|
|
||||||
|
else:
|
||||||
|
raise ValueError(capi_response.message)
|
||||||
|
|
||||||
|
logger.trace_if('capi.worker', 'Answer is not a Failure')
|
||||||
|
if not isinstance(capi_response, companion.EDMCCAPIResponse):
|
||||||
|
msg = f"Response was neither CAPIFailedRequest nor EDMCAPIResponse: {type(capi_response)}"
|
||||||
|
logger.error(msg)
|
||||||
|
raise ValueError(msg)
|
||||||
|
|
||||||
|
data = capi_response.capi_data
|
||||||
config.set('querytime', querytime)
|
config.set('querytime', querytime)
|
||||||
|
|
||||||
# Validation
|
# Validation
|
||||||
|
@ -587,7 +587,7 @@ class Session(object):
|
|||||||
self.tk_master: Optional[tk.Tk] = None
|
self.tk_master: Optional[tk.Tk] = None
|
||||||
|
|
||||||
self.capi_raw_data = CAPIDataRaw()
|
self.capi_raw_data = CAPIDataRaw()
|
||||||
logger.info('Starting CAPI queries thread...')
|
logger.debug('Starting CAPI queries thread...')
|
||||||
self.capi_response_queue: Queue
|
self.capi_response_queue: Queue
|
||||||
self.capi_query_queue: Queue = Queue()
|
self.capi_query_queue: Queue = Queue()
|
||||||
self.capi_query_thread = threading.Thread(
|
self.capi_query_thread = threading.Thread(
|
||||||
@ -596,7 +596,7 @@ class Session(object):
|
|||||||
name='CAPI worker'
|
name='CAPI worker'
|
||||||
)
|
)
|
||||||
self.capi_query_thread.start()
|
self.capi_query_thread.start()
|
||||||
logger.info('Done')
|
logger.debug('Done')
|
||||||
|
|
||||||
def set_capi_response_queue(self, capi_response_queue: Queue) -> None:
|
def set_capi_response_queue(self, capi_response_queue: Queue) -> None:
|
||||||
"""Set a reference to the CAPI response data queue."""
|
"""Set a reference to the CAPI response data queue."""
|
||||||
@ -711,7 +711,7 @@ class Session(object):
|
|||||||
######################################################################
|
######################################################################
|
||||||
def capi_query_worker(self): # noqa: C901, CCR001
|
def capi_query_worker(self): # noqa: C901, CCR001
|
||||||
"""Worker thread that performs actual CAPI queries."""
|
"""Worker thread that performs actual CAPI queries."""
|
||||||
logger.info('CAPI worker thread starting')
|
logger.debug('CAPI worker thread starting')
|
||||||
|
|
||||||
def capi_single_query(capi_endpoint: str, timeout: int = capi_default_timeout) -> CAPIData: # noqa: CCR001
|
def capi_single_query(capi_endpoint: str, timeout: int = capi_default_timeout) -> CAPIData: # noqa: CCR001
|
||||||
"""
|
"""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user