Forum Discussion

llama's avatar
llama
Icon for Neophyte rankNeophyte
6 days ago
Solved

LM SDK API v3 - get_device_list not responding

Hello,

My script that was running without issue yesterday now just indefinitely hangs, if i interrupt it it looks like it just times out

code:

import logicmonitor_sdk
from logicmonitor_sdk.rest import ApiException
import json
import sys
from pprint import pprint
from rich.console import Console
import time

company = 'company'
id = 'abc'
token = 'lma_'

configuration = logicmonitor_sdk.Configuration()
configuration.company = company
configuration.access_id = id
configuration.access_key = token

lm = logicmonitor_sdk.LMApi(logicmonitor_sdk.ApiClient(configuration))

def get_devices():
    try:
        devices = []
        end_found = False
        offset = 0
        size = 100
        while not end_found:
            current = lm.get_device_list(size=size, start=offset).items
            devices += current
            offset += len(current)
            end_found = len(current) != size
        pprint(devices)
        return devices
    except ApiException as e:
        print('Exception Caught: %s\n' % e)

Traceback:

 

^CTraceback (most recent call last):
  File "/Users/lee/dev/logic_monitor/test.py", line 155, in <module>
    get_devices()
    ~~~~~~~~~~~^^
  File "/Users/lee/dev/logic_monitor/test.py", line 28, in get_devices
    current = lm.get_device_list(size=size, start=offset).items
              ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/lee/dev/logic_monitor/venv/lib/python3.13/site-packages/logicmonitor_sdk/api/lm_api.py", line 16986, in get_device_list
    (data) = self.get_device_list_with_http_info(**kwargs)  # noqa: E501
  File "/Users/lee/dev/logic_monitor/venv/lib/python3.13/site-packages/logicmonitor_sdk/api/lm_api.py", line 17070, in get_device_list_with_http_info
    return self.api_client.call_api(
           ~~~~~~~~~~~~~~~~~~~~~~~~^
        '/device/devices', 'GET',
        ^^^^^^^^^^^^^^^^^^^^^^^^^
    ...<11 lines>...
        _request_timeout=params.get('_request_timeout'),
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        collection_formats=collection_formats)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/lee/dev/logic_monitor/venv/lib/python3.13/site-packages/logicmonitor_sdk/api_client.py", line 333, in call_api
    return self.__call_api(resource_path, method,
           ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
                           path_params, query_params, header_params,
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ...<2 lines>...
                           _return_http_data_only, collection_formats,
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                           _preload_content, _request_timeout)
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/lee/dev/logic_monitor/venv/lib/python3.13/site-packages/logicmonitor_sdk/api_client.py", line 162, in __call_api
    response_data = self.request(
        method, url, query_params=query_params, headers=header_params,
        post_params=post_params, body=body,
        _preload_content=_preload_content,
        _request_timeout=_request_timeout)
  File "/Users/lee/dev/logic_monitor/venv/lib/python3.13/site-packages/logicmonitor_sdk/api_client.py", line 355, in request
    return self.rest_client.GET(url,
           ~~~~~~~~~~~~~~~~~~~~^^^^^
                                query_params=query_params,
                                ^^^^^^^^^^^^^^^^^^^^^^^^^^
                                _preload_content=_preload_content,
                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                                _request_timeout=_request_timeout,
                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                                headers=headers)
                                ^^^^^^^^^^^^^^^^
  File "/Users/lee/dev/logic_monitor/venv/lib/python3.13/site-packages/logicmonitor_sdk/rest.py", line 231, in GET
    return self.request("GET", url,
           ~~~~~~~~~~~~^^^^^^^^^^^^
                        headers=headers,
                        ^^^^^^^^^^^^^^^^
                        _preload_content=_preload_content,
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                        _request_timeout=_request_timeout,
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                        query_params=query_params)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/lee/dev/logic_monitor/venv/lib/python3.13/site-packages/logicmonitor_sdk/rest.py", line 206, in request
    r = self.pool_manager.request(method, url,
                                  fields=query_params,
                                  preload_content=_preload_content,
                                  timeout=timeout,
                                  headers=headers)
  File "/Users/lee/dev/logic_monitor/venv/lib/python3.13/site-packages/urllib3/_request_methods.py", line 135, in request
    return self.request_encode_url(
           ~~~~~~~~~~~~~~~~~~~~~~~^
        method,
        ^^^^^^^
    ...<3 lines>...
        **urlopen_kw,
        ^^^^^^^^^^^^^
    )
    ^
  File "/Users/lee/dev/logic_monitor/venv/lib/python3.13/site-packages/urllib3/_request_methods.py", line 182, in request_encode_url
    return self.urlopen(method, url, **extra_kw)
           ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/lee/dev/logic_monitor/venv/lib/python3.13/site-packages/urllib3/poolmanager.py", line 443, in urlopen
    response = conn.urlopen(method, u.request_uri, **kw)
  File "/Users/lee/dev/logic_monitor/venv/lib/python3.13/site-packages/urllib3/connectionpool.py", line 787, in urlopen
    response = self._make_request(
        conn,
    ...<10 lines>...
        **response_kw,
    )
  File "/Users/lee/dev/logic_monitor/venv/lib/python3.13/site-packages/urllib3/connectionpool.py", line 534, in _make_request
    response = conn.getresponse()
  File "/Users/lee/dev/logic_monitor/venv/lib/python3.13/site-packages/urllib3/connection.py", line 516, in getresponse
    httplib_response = super().getresponse()
  File "/opt/homebrew/Cellar/python@3.13/3.13.1/Frameworks/Python.framework/Versions/3.13/lib/python3.13/http/client.py", line 1428, in getresponse
    response.begin()
    ~~~~~~~~~~~~~~^^
  File "/opt/homebrew/Cellar/python@3.13/3.13.1/Frameworks/Python.framework/Versions/3.13/lib/python3.13/http/client.py", line 331, in begin
    version, status, reason = self._read_status()
                              ~~~~~~~~~~~~~~~~~^^
  File "/opt/homebrew/Cellar/python@3.13/3.13.1/Frameworks/Python.framework/Versions/3.13/lib/python3.13/http/client.py", line 292, in _read_status
    line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
               ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^
  File "/opt/homebrew/Cellar/python@3.13/3.13.1/Frameworks/Python.framework/Versions/3.13/lib/python3.13/socket.py", line 719, in readinto
    return self._sock.recv_into(b)
           ~~~~~~~~~~~~~~~~~~~~^^^
  File "/opt/homebrew/Cellar/python@3.13/3.13.1/Frameworks/Python.framework/Versions/3.13/lib/python3.13/ssl.py", line 1304, in recv_into
    return self.read(nbytes, buffer)
           ~~~~~~~~~^^^^^^^^^^^^^^^^
  File "/opt/homebrew/Cellar/python@3.13/3.13.1/Frameworks/Python.framework/Versions/3.13/lib/python3.13/ssl.py", line 1138, in read
    return self._sslobj.read(len, buffer)
           ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
KeyboardInterrupt

If i call another endpoint say get_alert_list, i have no issues and get a response.

  • Have you tried tossing in a print in that loop? To verify the loop is looping?

    • llama's avatar
      llama
      Icon for Neophyte rankNeophyte

      Yeah, it was stuck looping over and over again.
      I did post a reply with what i found and the code that i used, but it like my replies to you yesterday have gone.

      Clearly LogicMonitor don't want my input :')