Я хочу выполнить длительную задачу в одном модуле из другого. Для этого я начал использовать subprocess.Popen для выполнения этой задачи, которая делает то, что мне нужно. Однако subprocess.Popen не является асинхронным и, таким образом, блокирует цикл событий, который предотвращает выполнение других конечных точек во время работы процесса. Чтобы сделать эту задачу асинхронной, я переключился на asyncio.create_subprocess_exec, однако получаю ошибки, которые я понимаю, как исправить.
Вот команда, которую я выполняю, которая работает с `subprocess.Popen '
Это ошибка, которую я получаю. Может ли кто-нибудь помочь мне понять причину и возможное решение этой ошибки? Я думаю, это связано с тем, где выполняется команда или kubectl, но я полностью уверен.
No such file or directory
'Traceback (most recent call last):\n File "/home/devacc/git/fine-tuning-service/app/k8s/k8s_client.py", line 140, in exec_command_in_pod_asyncio\n process = await asyncio.create_subprocess_exec(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "/usr/lib/python3.12/asyncio/subprocess.py", line 224, in create_subprocess_exec\n transport, protocol = await loop.subprocess_exec(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "/usr/lib/python3.12/asyncio/base_events.py", line 1744, in subprocess_exec\n transport = await self._make_subprocess_transport(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "/usr/lib/python3.12/asyncio/unix_events.py", line 211, in _make_subprocess_transport\n transp = _UnixSubprocessTransport(self, protocol, args, shell,\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "/usr/lib/python3.12/asyncio/base_subprocess.py", line 36, in __init__\n self._start(args=args, shell=shell, stdin=stdin, stdout=stdout,\n File "/usr/lib/python3.12/asyncio/unix_events.py", line 820, in _start\n self._proc = subprocess.Popen(\n ^^^^^^^^^^^^^^^^^\n File "/usr/lib/python3.12/subprocess.py", line 1026, in __init__\n self._execute_child(args, executable, preexec_fn, close_fds,\n File "/usr/lib/python3.12/subprocess.py", line 1955, in _execute_child\n raise child_exception_type(errno_num, err_msg, err_filename)\nFileNotFoundError: [Errno 2] No such file or directory: \'kubectl exec -n dsx-genai-finetuned-models-api dsx-ai-accelerators-llama-factory-654fcd84dd-r7spk -- /bin/sh -c llamafactory-cli train /home/llama-factory-runtime/.tmpfiles/e2ece994-7f10-442c-aae4-e938381fb67a.yaml > .tmpfiles/e2ece994-7f10-442c-aae4-e938381fb67a.log 2>&1\'\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File "/home/devacc/.vscode-server/extensions/ms-python.debugpy-2024.8.0/bundled/libs/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_resolver.py", line 189, in _get_py_dictionary\n attr = getattr(var, name)\n ^^^^^^^^^^^^^^^^^^\nAttributeError: characters_written\n'
Я пробовал отладить код, но не нашел реального решения.
Я хочу выполнить длительную задачу в одном модуле из другого. Для этого я начал использовать subprocess.Popen для выполнения этой задачи, которая делает то, что мне нужно. Однако subprocess.Popen не является асинхронным и, таким образом, блокирует цикл событий, который предотвращает выполнение других конечных точек во время работы процесса. Чтобы сделать эту задачу асинхронной, я переключился на asyncio.create_subprocess_exec, однако получаю ошибки, которые я понимаю, как исправить. Вот команда, которую я выполняю, которая работает с `subprocess.Popen ' [code]kubectl exec -n ns1 devpod-654fcd84dd-r7spk -- /bin/sh -c llamafactory-cli train /home/llama-factory-runtime/.tmpfiles/e2ece994-7f10-442c-aae4-e938381fb67a.yaml > .tmpfiles/e2ece994-7f10-442c-aae4-e938381fb67a.log 2>&1 [/code] Это ошибка, которую я получаю. Может ли кто-нибудь помочь мне понять причину и возможное решение этой ошибки? Я думаю, это связано с тем, где выполняется команда или kubectl, но я полностью уверен. [code]No such file or directory
'Traceback (most recent call last):\n File "/home/devacc/git/fine-tuning-service/app/k8s/k8s_client.py", line 140, in exec_command_in_pod_asyncio\n process = await asyncio.create_subprocess_exec(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "/usr/lib/python3.12/asyncio/subprocess.py", line 224, in create_subprocess_exec\n transport, protocol = await loop.subprocess_exec(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "/usr/lib/python3.12/asyncio/base_events.py", line 1744, in subprocess_exec\n transport = await self._make_subprocess_transport(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "/usr/lib/python3.12/asyncio/unix_events.py", line 211, in _make_subprocess_transport\n transp = _UnixSubprocessTransport(self, protocol, args, shell,\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File "/usr/lib/python3.12/asyncio/base_subprocess.py", line 36, in __init__\n self._start(args=args, shell=shell, stdin=stdin, stdout=stdout,\n File "/usr/lib/python3.12/asyncio/unix_events.py", line 820, in _start\n self._proc = subprocess.Popen(\n ^^^^^^^^^^^^^^^^^\n File "/usr/lib/python3.12/subprocess.py", line 1026, in __init__\n self._execute_child(args, executable, preexec_fn, close_fds,\n File "/usr/lib/python3.12/subprocess.py", line 1955, in _execute_child\n raise child_exception_type(errno_num, err_msg, err_filename)\nFileNotFoundError: [Errno 2] No such file or directory: \'kubectl exec -n dsx-genai-finetuned-models-api dsx-ai-accelerators-llama-factory-654fcd84dd-r7spk -- /bin/sh -c llamafactory-cli train /home/llama-factory-runtime/.tmpfiles/e2ece994-7f10-442c-aae4-e938381fb67a.yaml > .tmpfiles/e2ece994-7f10-442c-aae4-e938381fb67a.log 2>&1\'\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File "/home/devacc/.vscode-server/extensions/ms-python.debugpy-2024.8.0/bundled/libs/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_resolver.py", line 189, in _get_py_dictionary\n attr = getattr(var, name)\n ^^^^^^^^^^^^^^^^^^\nAttributeError: characters_written\n' [/code] Я пробовал отладить код, но не нашел реального решения.