Azure函数计时器函数异步运行部分代码

jdzmm42g  于 2023-06-24  发布在  其他
关注(0)|答案(2)|浏览(111)

我在Python中有一个定时器函数,应该每天运行。但是,业务要求某个方法每月运行一次。
我有办法做到吗?
在伪代码中,它将类似于以下内容:

next_monthly_job = date + "30d"

def main (timer):
    if current_date != next_monthly_job:
        ## do normal stuff
    elif:
        ## do specific monthly stuff
        next_monthly_job = current_date + "30d"

我只是担心全局变量会在每次触发时被覆盖,因此永远不会到达else语句。
先谢谢你了!

xmd2e60i

xmd2e60i1#

我猜你会用Azure函数应用程序然后很容易-只需为您的函数配置时间触发器(https://learn.microsoft.com/en-us/azure/azure-functions/functions-bindings-timer?tabs=python-v2%2Cin-process&pivots=programming-language-python)。创建两个函数,并为每个函数设置相应的触发器。

pbwdgjma

pbwdgjma2#

你可以通过如下设置function.json每月运行你的Function:-

{
  "scriptFile": "__init__.py",
  "bindings": [
    {
      "name": "mytimer",
      "type": "timerTrigger",
      "direction": "in",
      "schedule": "0 0 0 1 * *"
    }
  ]
}

在你的函数www.example.com中init.py,检查当前日期,看看你是想执行常规的还是定制的每月的东西。要确定计时器是否过期,请使用isPastDue属性。
验证码:-

import logging

import azure.functions as func

def main(mytimer: func.TimerRequest) -> None:
    utc_timestamp = datetime.datetime.utcnow().replace(
        tzinfo=datetime.timezone.utc).isoformat()

    if mytimer.past_due:
        logging.info('The timer is past due!')

    logging.info('Python timer trigger function ran at %s', utc_timestamp)

输出:-

相关问题