所以我想尝试一个我想要在azure上主持的小项目,这是一个工作正常的网络应用程序,我最近发现了webjobs,我现在想用它来运行任务数据收集和更新,我有一个控制台应用程序。
我的问题是我无法设置时间表,因为它已发布到不支持调度的Web应用程序,所以我尝试使用Azure Webjobs SDK并使用计时器,但它不会在没有AzureWebJobsStorage
的情况下运行连接字符串是我无法获得的,因为我的Azure帐户是Dreamspark帐户,我无法使用它创建Azure存储帐户。
所以我想知道是否有某种方法让这个webjob以某种方式运行(每小时左右)。否则,如果我刚刚将我的帐户升级为“即用即付”?我还能保留我的免费功能吗?即SQL Server。
我不确定这是否是正确的问题,但我尝试使用谷歌搜索没有成功。
更新:决定让控制台应用程序在infinate循环中运行,并且只是通过门户网站监控它,下面的代码就是我用来制作循环的。
class Program
{
static void Main()
{
var time = 1000 * 60 * 30;
Timer myTimer = new Timer(time);
myTimer.Start();
myTimer.Elapsed += new ElapsedEventHandler(myTimer_Elapsed);
Console.ReadLine();
}
public static void myTimer_Elapsed(object sender, ElapsedEventArgs e)
{
Functions.PullAndUpdateDatabase();
}
}
答案 0 :(得分:0)
Amit Apple的博客标题为" How to add a schedule to a triggered WebJob"
详细介绍了按计划安排网络工作的最简单方法。就像在控制台应用程序中添加一个名为settings.job
的JSON文件一样简单,并在其中描述您想要作为cron表达式的计划,如下所示:
{"schedule": "the schedule as a cron expression"}
例如,要每30分钟运行一次作业,您需要在settings.job
文件中执行此操作:
{"schedule": "0 0,30 * * * *"}
Amit的博客也详细介绍了如何编写cron表达式。
警告:此方法中使用的计划机制托管在运行Web应用程序的实例上。如果您的Web应用程序未配置为Always On且未经常使用,则可能会将其卸载,然后调度程序将停止运行。
要防止出现这种情况,您需要将您的网络应用程序设置为Always On,或者根据Azure Scheduler服务选择其他计划选项,如标题为" {{3}的博文中所述}"由David Ebbo撰写。