Мой сервер работает по расписанию запуска и остановки, которое, к сожалению, соответствует летнему времени. Я ищу способ динамически изменить расписание CRON в моем приложении-функции, чтобы учесть переход на летнее время. В коде Python это легко; однако триггер таймера приложения-функции не работает, если для параметра «расписание» установлено что-либо, кроме буквальной строки.
Код: Выделить всё
import azure.functions as func
import logging
app = func.FunctionApp()
@app.schedule(
schedule=""
,arg_name="myTimer"
,run_on_startup=False
,use_monitor=True
)
def timer_trigger(myTimer: func.TimerRequest) -> None:
if myTimer.past_due:
logging.info('The timer is past due!')
logging.info('Python timer trigger function executed.')
Например, в @app.schedule(), если вы установите Schedule = "0 35 * * * *", планировщик сработает 35-го числа. минута каждый час, как и ожидалось. Убедившись, что литеральные строки работают, я попробовал следующие подходы, допускающие динамический ввод:
Код: Выделить всё
var_cron = "0 35 * * * *"
schedule=var_cron
Код: Выделить всё
schedule="0 {minutes} * * * *".format(minutes=35)
Несмотря на то, что аналитика приложения Timer Trigger Issue Analysis в диагностическом центре показывает CRON как 0 35 * * * * для всех этих подходов, приложение фактически не запускает . При запуске приложения на портале Azure вручную ошибок не возникает. Кроме того, диагностическое представление «Незапускаемые функции» не возвращает ошибок. Со всех сторон, которые я хотел проверить, кажется, что Azure понимает, что передается в параметр Schedule @app.schedule(). Есть ли другой подход к Python, который вы можете попробовать? Это известная ошибка на стороне Azure? Любая помощь очень ценится.
Подробнее здесь:
https://stackoverflow.com/questions/791 ... aving-time