无服务器-如何在AWS Lambda函数中定期运行Flask命令?

无服务器-如何在AWS Lambda函数中定期运行Flask命令?,flask,aws-lambda,aws-serverless,Flask,Aws Lambda,Aws Serverless,我正在使用以下serverless.yml文件来运行flask应用程序。我的flask应用程序有一个cli命令,我希望定期调用它 所以,yml文件应该执行两个任务,作为一个普通的wsgi应用程序执行api调用,并定期调用命令行函数 我应该在yml文件中对其做哪些更改 functions: app: handler: wsgi.handler events: - http: ANY / - http: 'ANY {proxy+}' Serverless

我正在使用以下serverless.yml文件来运行flask应用程序。我的flask应用程序有一个cli命令,我希望定期调用它

所以,yml文件应该执行两个任务,作为一个普通的wsgi应用程序执行api调用,并定期调用命令行函数

我应该在yml文件中对其做哪些更改

functions:
  app:
    handler: wsgi.handler
    events:
      - http: ANY /
      - http: 'ANY {proxy+}'
Serverless.yml

app = Flask(__name__)
user_cli = AppGroup('user')

@user_cli.command('create')
def create_user():
    pass

app.cli.add_command(user_cli)

命令需要运行:“flask user create”

,因为可能有多个lambda函数实例同时运行。是否要在所有实例上运行此命令,最可能的情况是,无论给定时间运行的lambda函数数量如何,都要运行此命令一次

由于您使用的是无服务器,因此支持编写类似cronjob的函数。以下是您需要遵循的步骤:

  • 添加您希望函数
    create\u user
    运行频率的计划

    functions:
      cronCreateUser:
        handler: app.create_user
        events:
          # At 00:00 on Sunday
          - schedule: cron(0 0 * * SUN)
    

注:

  • 您无需考虑cli命令,只需调用该函数即可(例如,
    create\u user
  • 我假设函数
    create\u user
    位于项目根目录中名为
    app.py
    的文件中
  • 我建议您阅读以下内容:

  • 无服务器的和
  • (引擎盖下到底发生了什么)

  • 你好,Sameera,如果我的答案对你有用,请将其标记为“最佳答案”i.stack.imgur.com/QpogP.pngThanks mostafazh。它起作用了!
    functions:
      cronCreateUser:
        handler: app.create_user
        events:
          # Every 1 hour
          - schedule: rate(1 hour)