我是Azure Webjob概念的新手。我正在尝试创建一个将被触发的WebJob。
Program.cs
static void Main()
{
var config = new JobHostConfiguration();
if (config.IsDevelopment)
{
config.UseDevelopmentSettings();
}
var host = new JobHost(config);
host.Call(typeof(Functions).GetMethod("MyMethod"));
host.RunAndBlock();
}
Function.cs
[NoAutomaticTrigger]
public static void MyMethod()
{
//Logic
}
我可以看到My WebJob正在运行,但是仅在部署的一开始就调用了该功能。我可以通过使用函数调用日志来运行该函数。
如果我没记错的话,它应该按我计划的那样调用函数吗?
答案 0 :(得分:2)
您正在使用此行>>> from random import randrange
>>> pile = [
... [randrange(10) for _ in range(randrange(8))]
... for _ in range(10)
... ]
>>> min(len(l) for l in pile), max(len(l) for l in pile)
(0, 6)
>>> sorted(pile, key=excludedgetter(0, 2, 4))
[[], [1], [9, 1, 8, 2, 4, 0], [0, 3], [7, 3, 4, 9, 7, 7], [8, 4, 4], [6, 4, 7, 9, 9], [0, 5, 3, 7, 2], [4, 6, 6, 0], [8, 8, 1]]
如果您希望它由时间表触发,
只需在您的webjob项目中添加一个host.RunAndBlock();
文件,其中包含您想要的计划时间
例如
settings.job
然后在program.cs中使用
{
"schedule": "0 0 * * * *"
}
部署代码,不要忘记将using (var host = new JobHost(config))
{
host.Call(typeof(Functions).GetMethod("MyMethod"));
}
复制到输出目录,并且cron设置应该在门户网站的应用程序webjob视图下是可见的
答案 1 :(得分:0)
如果我没记错的话,它应该按照我的计划调用该函数,对吗?
什么时间表?您没有配置任何时间表。您唯一要做的就是一次调用MyMethod
(通过使用反射获取方法!),然后在RunAndBlock
上调用host
。
在Azure App Service> Create a scheduled WebJob
中查看使用WebJob运行后台任务您可以看看Azure Functions。这可能也有帮助。