从00:x0之前的1秒开始每10分钟运行一次Azure函数

时间:2018-12-24 18:37:20

标签: javascript cron azure-functions

Azure函数必须每10分钟无限期地从00:59:59(小时,分钟,秒)开始运行。我正在使用的Cron时间表未成功。

我正在使用基于计时器的Javascript Azure函数,例如,

module.exports = async function (context, myTimer) {
    var timeStamp = new Date().toISOString();

我不认为Azure函数中有设置开始日期/时间的设置。 cron计划程序似乎是唯一的选择。

根据Azure Functions文档:

  

计划表达式是一个CRON表达式,包含6个字段:

     

{second} {minute} {hour} {day} {month} {day of the week}

     

请注意,您在网上找到的许多cron表达式都省略了{second}字段,因此,如果您从其中之一进行复制,则必须针对额外的字段进行调整。

文档提供的示例:

  

每5分钟触发一次:0 */5 * * * *

     

要在每天的9:30 AM触发:0 30 9 * * *

59 */10 * * * *导致以下执行时间:

  • 结果:1​​1:40:59 |期望的:11:39:59
  • 结果:1​​1:30:59 |期望:11:29:59
  • 结果:1​​1:20:59 |期望:11:19:59
  • 结果:1​​1:10:59 |期望:11:09:59

59 */10-1 * * * *不支持。

Azure函数需要在00:59:59开始其初始运行的原因是,该函数会将过去10分钟内发生的事件时间戳记与10分钟UTC时间间隔进行比较。如果任何分钟级别的事件时间戳与该间隔内的某个UTC时间戳相匹配(例如,事件2018-12-21Txx:3x:xx.xxxZ的{​​{1}}与该模式2018-12-21T00:35:18.894Z的任何UTC时间戳相匹配) ,就会执行一个动作。)

我被困住了。任何帮助表示赞赏。谢谢。

1 个答案:

答案 0 :(得分:3)

有点大嘴巴,但是您想要的是let storage = multer.diskStorage({ // pass function that will generate destination path destination: (req, file, cb) => { // initial upload path let destination = path.join(__dirname, 'uploads'); // ./uploads/ // if user logged in and You store user object in session if (req.session && req.session.user && req.session.user.id) { destination = path.join(destination, 'users', req.session.user.id, uuidv1()); // ./uploads/users/8/generated-uuid-here/ } else { destination = path.join(destination, 'files', uuidv1()); // ./uploads/files/generated-uuid-here/ } cb( null, destination ); }, // pass function that may generate unique filename if needed filename: (req, file, cb) => { cb( null, Date.now() + '.' + path.extname(file.originalname) ); } });