Обновление до Python 3.8

Материал из Документация Ключ-АСТРОМ

Обновите пользовательские расширения Ключ-АСТРОМ с Python 3.6 до Python 3.8.

Начиная с ЕдиногоАгента и АктивногоШлюза версии 1.231, мы обновляем платформу расширений (также называемую платформой плагинов) с Python 3.6 до Python 3.8.

  • Последствия : некоторые расширения Ключ-АСТРОМ, работающие в вашей среде, могут перестать работать и потребовать повторного развертывания новой версии, подготовленной для Python 3.8.
  • Симптомы :
    • Никакие данные не предоставляются для затронутых показателей на информационных панелях, оповещениях и страницах пользовательских устройств, заполненных затронутыми метриками расширения.
    • В логах расширений отображаются ошибки. ModuleNotFoundErrorЧаще всего в логе PluginAgent это проявляется как Python .
    • Иногда виртуальная машина Python дает сбой.
  • Влияние . Эта проблема затрагивает только те расширения, которые используют собственные библиотеки, вызываемые из кода Python, распространяемого вместе с расширением.

Рекомендуемое решение

В случае каких-либо проблем с пользовательскими расширениями после обновления до ЕдиногоАгента версии 1.231+ мы рекомендуем пересобрать пакет расширений с использованием Python 3.8 вместе с новейшими модулями и повторно развернуть его на всех хостах.

Подробную информацию о создании, загрузке и развертывании расширений см. в разделе Расширения .

Обратите внимание, что для создания расширения необходимо использовать Python 3.8, то есть его plugin_sdkнеобходимо установить в среде Python 3.8. Мы рекомендуем использовать виртуальную среду Python, подготовленную Python 3.8.

  • Расширения, работающие на компьютерах с Windows, необходимо пересобирать в Windows; Расширения Linux необходимо пересобрать в Linux.
  • В настоящее время поддерживаются только 64-битные платформы.

Обновите расширение versionи install_requiresсвойства в plugin.jsonфайле.

Модули зависимостей, определенные в install_requiresсвойстве, должны быть последней доступной версией или версией, поддерживаемой Python 3.8.

Пример миграции

Ниже приведен отрывок из plugin.jsonфайла расширения, специфичного для Windows.

{

  "name": "custom.python.mssql",

  "version": "1.0",

  "type": "python",

  "requiredAgentVersion": "0.000.0",

  "entity": "PROCESS_GROUP_INSTANCE",

  "technologies": ["MSSQL"],

  "source": {

    "package": "custom_mssql_plugin",

    "className": "CustomMsSqlPlugin",

    "install_requires": ["pymssql==2.1.4"],

    "activation": "Singleton"

  },

  • Это версия 1.0; для этого не требуется какая-либо конкретная версия ЕдиногоАгента.
  • Для расширения требуется модуль pymssql версии 2.1.4.
  • Пакет расширения содержит бинарные модули, специфичные для конкретной платформы:
    • _mssql.cp36-win_amd64.pyd
    • pymssql.cp36-win_amd64.pyd Эти модули поддерживают Python версии 3.7 и более ранних версий, но не Python 3.8 (см. pymssql 2.1.4).).

Сообщение об ошибке

Расширение перестанет работать после обновления до ЕдиногоАгента версии 1.231+, и в логе PluginAgent появится следующая ошибка.

2021-10-26 11:03:32.032 UTC [00000c5c] info [native] 3164(MainThread) - [report_status] status changed for engine ('custom.python.mssql', 16080871464060409180) PluginFullStatus(pluginName=custom.python.mssql, pluginVersion=1.0, state=ERROR_UNKNOWN, description=No module named 'pymssql', monitoredEntityId=0xdf2abb657e09555c, stacktrace=Traceback (most recent call last):

File "C:\ProgramData/astromkey/oneagent/agent/runtime/engine_unpacked\ruxit\plugin_state_machine.py", line 336, in _execute_next_task

self._query_plugin()

File "C:\ProgramData/astromkey/oneagent/agent/runtime/engine_unpacked\ruxit\plugin_state_machine.py", line 663, in _query_plugin

self._plugin_run_data = self._create_plugin_run_data()

File "C:\ProgramData/astromkey/oneagent/agent/runtime/engine_unpacked\ruxit\plugin_state_machine.py", line 636, in _create_plugin_run_data

plugin_module = importlib.import_module(self.metadata["source"]["package"])

File "C:\Program Files/astromkey/oneagent/agent/plugin/python3.8\importlib\__init__.py", line 127, in import_module

return _bootstrap._gcd_import(name[level:], package, level)

File "<frozen importlib._bootstrap>", line 1014, in _gcd_import

File "<frozen importlib._bootstrap>", line 991, in _find_and_load

File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked

File "<frozen importlib._bootstrap>", line 671, in _load_unlocked

File "<frozen importlib._bootstrap_external>", line 843, in exec_module

File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed

File "C:\Program Files/astromkey/oneagent/plugin_deployment/custom.python.mssql\custom_mssql_plugin.py", line 14, in <module>

import pymssql

ModuleNotFoundError: No module named 'pymssql'

)

Расширение должно быть обновлено и пересобрано с использованием Python 3.8 и новейшего модуля pymssql, версия которого на данный момент равна 1. 2.2.2. Новую версию пакета расширения необходимо развернуть на всех хостах, на которых он работает.