Запуск сценария python при запуске экземпляра Google Cloud Compute - PullRequest
2 голосов
/ 03 августа 2020

Я пытался найти лучший способ запустить сценарий python при запуске моего экземпляра облачных вычислений. Пока что я не запустил его. Сценарий запускается при ручном выполнении на экземпляре. Я сделал файл исполняемым.

Это то, что я пробовал до сих пор:

1) Добавить сценарий непосредственно в метаданные с помощью ключа «startup-script». Скрипт начинается с:

#! /usr/bin/python3

Далее следует содержимое скрипта.

Результат: Не запускается, не отображается в журнале.

2) Попробуйте выполнить локальный скрипт из метаданных с ключом «startup-script»:

#! /usr/bin/bash"
/home/dir/scripts/script.py.

Результат: Не запускается, не запускается отображаются в журнале.

3) Указывает на файл, расположенный в сегменте хранилища, с помощью "URL-адреса сценария запуска".

gs://project.appspot.com/folder/script.py

Результат: Не запускается, но в журнале отображается «Найден сценарий запуска».

Надеюсь, у кого-нибудь есть идеи.

1 Ответ

0 голосов
/ 03 августа 2020

Это сработало для меня:

#! /bin/bash
cat <<EOF > /var/myScriptStackOverflow.py
with open("/var/python_was_here_stack_overflow.txt", "w") as file:
    file.write("Looks that the script is executed")
EOF
python3 /var/myScriptStackOverflow.py

Приведенный выше сценарий явно относится к путям, но это также работает:

#! /usr/bin/python3
with open("/var/python_was_here_stack_overflow.txt", "w") as file:
    file.write("Looks that the script is executed this way as well...")
  • Отредактируйте экземпляр, вставьте приведенный выше скрипт в Custom metadata с ключом startup-script:

введите описание изображения здесь

  • Сбросьте экземпляр
  • s sh внутри экземпляра, чтобы проверить результаты:
ls -la /var | grep -i py
-rw-r--r--  1 root root   119 Aug  3 17:33 myScriptStackOverflow.py
-rw-r--r--  1 root root    33 Aug  3 17:33 python_was_here_stack_overflow.txt
cat /var/myScriptStackOverflow.py 
with open("/var/python_was_here_stack_overflow.txt", "w") as file:
    file.write("Looks that the script is executed")
cat /var/python_was_here_stack_overflow.txt 
Looks that the script is executed
...