Известна ли какая-либо проблема, из-за которой среда Python для Azure Runbook не поддерживает функцию цикла while в сочетании с функцией печати?
У меня есть не видел ни одного оператора печати, возвращаемого, когда слово while было включено в основную функцию.
Это предназначено для отправки оповещения всякий раз, когда состояние моего Azure ВМ меняется. (Это будет по электронной почте, но для простоты я только что включил операторы печати... которые должны работать)
Удалите функцию while, и появятся все операторы печати. .
Это такая глупая ситуация. Даже print("Вы видите это сообщение...") и print("Ввод цикла...") не печатаются. Эти инструкции print даже не входят в цикл while, поэтому они должны печатать, даже если есть проблема с выполнением цикла while (чего нет). Я бы показал вам это с помощью отладочной печати, но если бы вещь действительно напечаталась так, как я сказал, вы бы это увидели.
Из-за этого у меня серьезно повышается кровяное давление. Compute_client аутентифицируется и возвращает правильное имя_VM, так почему же каждый раз, когда я включаю цикл while, он вызывает шипение?
Я так зол на это.
import time
import smtplib
import inspect
from email.mime.text import MIMEText
from azure.common.credentials import ServicePrincipalCredentials
from azure.mgmt.compute import ComputeManagementClient
# Azure setup
subscription_id = 'xxxx'
resource_group_name = 'xxxx'
vm_name = 'xxxx'
from azure.core.exceptions import ClientAuthenticationError
# Authentication of Azure's Service Principal
def service_principal_authentication():
"""Checks the Authentication of Azure's Service Principal """
print("Authenticating Service Principal....")
try:
credentials = ServicePrincipalCredentials(
client_id='xxxx',
secret='xxx',
tenant='xxx'
)
print("Service Principal Authenticity Verified")
return ComputeManagementClient(credentials, subscription_id)
except Exception as e:
print(f"There was an error with the authenticating the Service Principal: {e}")
except ClientAuthenticationError as e:
print(f"Client Authentication Error {e}")
def get_vm_status(compute_client):
"""Retrieve the current status of the VM."""
print("Retrieving VM status......")
try:
# Explicitly request the instance view
vm = compute_client.virtual_machines.get(resource_group_name, vm_name, expand='instanceView')
# Check if instance view is available
if vm.instance_view:
print("Additional print statement")
return vm.instance_view.statuses[1].code # Assuming the status is at index 1
else:
print("Instance view is not available.")
return None
except ClientAuthenticationError as e:
print(f"There was a client authentication error {e}")
except Exception as e:
print(f"Error retrieving VM status: {e}, in function {inspect.stack()[0].function}")
def main():
print("Can you see this message....")
compute_client = service_principal_authentication()
if not compute_client:
print("Service Principal Error")
return None
previous_vm_status = None
print("Entering loop...")
while True:
current_vm_status = get_vm_status(compute_client)
if previous_vm_status != current_vm_status:
print(f"VM status has changed - {current_vm_status}")
else:
print("Status has remained unchanged")
previous_vm_status = current_vm_status
time.sleep(10)
if __name__ == "__main__":
main()
Подробнее здесь: https://stackoverflow.com/questions/793 ... while-loop
Функция печати не работает при использовании с циклом While ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Функция печати не работает без сброса = True при использовании с циклом While
Anonymous » » в форуме Python - 0 Ответы
- 14 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Функция печати не работает без сброса = True при использовании с циклом While
Anonymous » » в форуме Python - 0 Ответы
- 15 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Функция печати не работает без сброса = True при использовании с циклом While
Anonymous » » в форуме Python - 0 Ответы
- 16 Просмотры
-
Последнее сообщение Anonymous
-