Обновление до Python 3.8: различия между версиями

Материал из Документация Ключ-АСТРОМ
(Новая страница: «== Обновите пользовательские расширения Ключ-АСТРОМ с Python 3.6 до Python 3.8. == Начиная с Единого...»)
 
Строка 8: Строка 8:
** Иногда виртуальная машина Python дает сбой.
** Иногда виртуальная машина Python дает сбой.
* '''Влияние''' . Эта проблема затрагивает только те расширения, которые используют собственные библиотеки, вызываемые из кода Python, распространяемого вместе с расширением.
* '''Влияние''' . Эта проблема затрагивает только те расширения, которые используют собственные библиотеки, вызываемые из кода Python, распространяемого вместе с расширением.
== Рекомендуемое решение ==
В случае каких-либо проблем с пользовательскими расширениями после обновления до ЕдиногоАгента версии 1.231+ мы рекомендуем пересобрать пакет расширений с использованием Python 3.8 вместе с новейшими модулями и повторно развернуть его на всех хостах.
Подробную информацию о создании, загрузке и развертывании расширений см. в разделе Расширения .
Обратите внимание, что для создания расширения необходимо использовать Python 3.8, то есть его <code>plugin_sdk</code>необходимо установить в среде Python 3.8. Мы рекомендуем использовать виртуальную среду Python, подготовленную Python 3.8.
* Расширения, работающие на компьютерах с Windows, необходимо пересобирать в Windows; Расширения Linux необходимо пересобрать в Linux.
* В настоящее время поддерживаются только 64-битные платформы.
Обновите расширение <code>version</code>и <code>install_requires</code>свойства в <code>plugin.json</code>файле.
Модули зависимостей, определенные в <code>install_requires</code>свойстве, должны быть последней доступной версией или версией, поддерживаемой Python 3.8.
== Пример миграции ==
Ниже приведен отрывок из <code>plugin.json</code>файла расширения, специфичного для Windows.
<code>{</code>
<code>  "name": "custom.python.mssql",</code>
<code>  "version": "1.0",</code>
<code>  "type": "python",</code>
<code>  "requiredAgentVersion": "0.000.0",</code>
<code>  "entity": "PROCESS_GROUP_INSTANCE",</code>
<code>  "technologies": ["MSSQL"],</code>
<code>  "source": {</code>
<code>    "package": "custom_mssql_plugin",</code>
<code>    "className": "CustomMsSqlPlugin",</code>
<code>    "install_requires": ["pymssql==2.1.4"],</code>
<code>    "activation": "Singleton"</code>
<code>  },</code>
* Это версия 1.0; для этого не требуется какая-либо конкретная версия ЕдиногоАгента.
* Для расширения требуется модуль pymssql версии 2.1.4.
* Пакет расширения содержит бинарные модули, специфичные для конкретной платформы:
** <code>_mssql.cp36-win_amd64.pyd</code>
** <code>pymssql.cp36-win_amd64.pyd</code>  Эти модули поддерживают Python версии 3.7 и более ранних версий, но не Python 3.8 (см. [https://pypi.org/project/pymssql/2.1.4/ pymssql 2.1.4)].).
=== Сообщение об ошибке ===
Расширение перестанет работать после обновления до ЕдиногоАгента версии 1.231+, и в логе PluginAgent появится следующая ошибка.
<code>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):</code>
<code>File "C:\ProgramData/astromkey/oneagent/agent/runtime/engine_unpacked\ruxit\plugin_state_machine.py", line 336, in _execute_next_task</code>
<code>self._query_plugin()</code>
<code>File "C:\ProgramData/astromkey/oneagent/agent/runtime/engine_unpacked\ruxit\plugin_state_machine.py", line 663, in _query_plugin</code>
<code>self._plugin_run_data = self._create_plugin_run_data()</code>
<code>File "C:\ProgramData/astromkey/oneagent/agent/runtime/engine_unpacked\ruxit\plugin_state_machine.py", line 636, in _create_plugin_run_data</code>
<code>plugin_module = importlib.import_module(self.metadata["source"]["package"])</code>
<code>File "C:\Program Files/astromkey/oneagent/agent/plugin/python3.8\importlib\__init__.py", line 127, in import_module</code>
<code>return _bootstrap._gcd_import(name[level:], package, level)</code>
<code>File "<frozen importlib._bootstrap>", line 1014, in _gcd_import</code>
<code>File "<frozen importlib._bootstrap>", line 991, in _find_and_load</code>
<code>File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked</code>
<code>File "<frozen importlib._bootstrap>", line 671, in _load_unlocked</code>
<code>File "<frozen importlib._bootstrap_external>", line 843, in exec_module</code>
<code>File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed</code>
<code>File "C:\Program Files/astromkey/oneagent/plugin_deployment/custom.python.mssql\custom_mssql_plugin.py", line 14, in <module></code>
<code>import pymssql</code>
<code>ModuleNotFoundError: No module named 'pymssql'</code>
<code>)</code>
Расширение должно быть обновлено и пересобрано с использованием Python 3.8 и новейшего модуля pymssql, версия которого на данный момент равна 1. 2.2.2. Новую версию пакета расширения необходимо развернуть на всех хостах, на которых он работает.

Версия 07:47, 28 декабря 2023

Обновите пользовательские расширения Ключ-АСТРОМ с 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. Новую версию пакета расширения необходимо развернуть на всех хостах, на которых он работает.