c# - 在特定时间只运行一次 azure 函数?
问题描述
所以我正在发送移动应用推送通知,并且我已经设置了 Azure 通知中心,但我想在其中进行调度,我知道在 azure 中有一个选项可以做到这一点,因为它需要 200 美元决定创建 Azure Functions 来处理它,
我已经浏览了 NCRON 表达式,现在我想知道如何安排作业在特定日期运行一次,我能找到的只是基于重复的作业,并且是否可以像日期一样动态运行作业各不相同
public static class Function1
{
[FunctionName("Function1")]
public static void Run([TimerTrigger("0 0 15 2 Jan")]TimerInfo myTimer, ILogger log)
{
log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
}
}
我试图做这样的事情,在 1 月 2 日 15:00Hrs 运行一些东西,它似乎不起作用,我在这里遗漏了什么以及如何制作TimerTrigger
动态任何输入将不胜感激
谢谢
解决方案
为了清楚地描述,我重新编辑了整个答案。希望这次我能解释清楚。
好的。首先,你需要知道,azure Function 有一个声明部分和一个配置部分。
在本地,声明部分是([TimerTrigger("* * * * * *")]TimerInfo myTimer, ILogger log)
,配置部分是local.settings.json
文件。
部署到 Azure 时。它改变。声明部分变为function.json
,而Application Settings
成为配置部分。
根据您的要求,您可以在配置部分添加一个键并在您的函数中获取它。
例如,
在本地:
函数.cs:
using System;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.Extensions.Logging;
namespace TimeTrigger
{
public static class Function1
{
[FunctionName("Function1")]
public static void Run([TimerTrigger("%Schedule%")]TimerInfo myTimer, ILogger log)
{
log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
}
}
}
local.settings.json:
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "dotnet",
"Schedule": "* * * * * *"
}
}
您可以通过更改json中key的值来更改timetrigger的触发方式。(例如,使用powershell修改值。或者您可以使用代码修改。)
在门户网站:
与本地类似,您可以在门户网站上执行此操作:
声明部分:
配置部分:
推荐阅读
- javascript - ComponentDidUpdate 触发多次而不是每次更新一次
- javascript - JavaScript 和 Json 问题
- python - 使用 Chrome 驱动程序保存 google 登录
- linux - Ubuntu 中的 Firefox AT-SPI 支持
- reactjs - 如何使用 Material-UI ThemeProvider 和 createGenerateClassName 避免类名冲突
- r - R中的多项逻辑回归
- git - 复制 bitbucket 存储库并保留拉取请求
- amazon-s3 - AWS 节点开发工具包:如何生成不包含 AccessKeyId 的签名 S3 getObject URL
- java - Kodak 的 KCMS 在 openJDK 中替换为 Little-CMS (LCMS) - PDF 转换的性能下降(慢)
- typescript - Typescript Fluent API - 从每个函数的返回值中省略函数