2

我正在尝试遵循https://chalice.readthedocs.io/en/latest/topics/events.html中的文档

我试过这个

@app.schedule('0 0 * * ? *')
def dataRefresh(event):
    print(event.to_dict())

并得到这个错误:

botocore.exceptions.ClientError:调用 PutRule 操作时发生错误 (ValidationException):参数 ScheduleExpression 无效。

所以尝试了这个:

@app.schedule(Cron('0 0 * * ? *'))
def dataRefresh(event):
    print(event.to_dict())

并得到了另一个错误:

NameError:未定义名称“Cron”

没有任何效果......什么是正确的语法?

4

2 回答 2

7

如果要使用Cron对象,则必须从 chalice 包中导入它,然后每个值都是Cron对象的位置参数:

from chalice import Chalice, Cron

app = Chalice(app_name='sched')


@app.schedule(Cron(0, 0, '*', '*', '?', '*'))
def my_schedule():
    return {'hello': 'world'}

这是包含更多信息的文档。Cron

或者使用这种语法,它不需要额外的导入:

@app.schedule('cron(0 0 * * ? *)')
def dataRefresh(event):
    print(event.to_dict())
于 2020-03-04T16:10:13.070 回答
0

由于调度程序无法正常工作,我在代码中犯了一个错误。这不是语法错误。这是最重要的问题。我希望它对您或其他人有所帮助。

@app.schedule(Cron(50, 6, '*', '*', '?', '*'))
def reminder_mail_8AM_2DAYS_BEFORE(event):  ## testing with scheduler
    print("Inside Mail Reminder 8 AM & 2 days before")
    sendReminderMailsToUsersAt8AM()
    sendReminderMailsToUsers2DaysBefore()

@app.route('/reminderMailSend', methods=['GET'], cors=cors)
def reminder_mail_8AM_2DAYS_BEFORE():  ## Testing by get call
   print("Inside Mail Reminder 8 AM & 2 days before")
   sendReminderMailsToUsersAt8AM()
   sendReminderMailsToUsers2DaysBefore()

在这种情况下,您的调度程序将无法工作。请确保如果您为某些测试目的提供相同功能的路线。稍微更改方法名称,因为 chalice 覆盖了 app.py 中定义的方法。

于 2021-12-14T06:58:23.500 回答