我创建了第一个连续运行的天蓝色网络作业;
我不太确定这是一个代码问题,但为了完整起见,这里是我的代码:
static void Main()
{
var host = new JobHost();
host.CallAsync(typeof(Functions).GetMethod("ProcessMethod"));
host.RunAndBlock();
}
Run Code Online (Sandbox Code Playgroud)
对于该功能:
[NoAutomaticTrigger]
public static async Task ProcessMethod(TextWriter log)
{
log.WriteLine(DateTime.UtcNow.ToShortTimeString() + ": Started");
while (true)
{
Task.Run(() => RunAllAsync(log));
await Task.Delay(TimeSpan.FromSeconds(60));
}
log.WriteLine(DateTime.UtcNow.ToShortTimeString() + "Shutting down..");
}
Run Code Online (Sandbox Code Playgroud)
请注意,异步任务会触发自己的任务。这是为了确保它们以相同的间隔非常准确地启动。工作本身是下载一个网址,解析并在数据库中输入一些数据,但这不应该与我遇到的多实例问题相关。
我的问题是,一旦运行了大约 5 分钟,就会调用第二个 ProcessMethod,这使得我有两个会话同时做同样的事情。第二种方法说它是“从仪表板启动”,尽管我 100% 有信心我自己没有单击任何内容来启动它。
有人经历过类似的事情吗?
我希望达到的目标:
每当我的共享驱动器上的任何谷歌工作表中的单元格(由域中的任何用户)更改时,我都想调用 API 端点并包含有关编辑了哪个单元格的信息。
我的方法:我相信 Google App Scripts Add-on 是我所需要的。为域上的所有用户安装。
我看到有“绑定”脚本和独立脚本。对于独立脚本,除了基于计时器和日历的触发器之外,我无法创建任何其他触发器。绑定脚本似乎永久绑定到单个工作表,不会以任何方式影响其他工作表。
我错过了什么?
我在博客上找到了一些用于制作绑定脚本的端到端教程,但没有关于通用跨域内容的教程。
google-api google-apps-script google-apps-script-addon google-drive-shared-drive
我计划创建一个始终运行的函数项目,但根据azure函数响应多个触发器.
我知道这可以通过webjobs来完成,但可以通过功能完成吗?如果是这样,我如何将启动文件挂钩作为longrunning(阻塞)后台任务的入口点?