如何在服务器端swift中每n小时执行一次函数?

如何在服务器端swift中每n小时执行一次函数?,swift,vapor,Swift,Vapor,我正在寻找Django的Swift副本,它允许函数在给定的时间内执行 我需要一个在服务器端Swift上工作的解决方案,这意味着不是所有的基础都是可用的,也不是针对iOS/MAC的。p> 我正在使用Vapor框架。您有三个主要选项 对于在服务器应用程序中管理的计时器(即重新启动服务器会重置计时器),您可以使用Dispatch: import Dispatch let timer = DispatchSource.makeTimerSource() timer.setEventHandler() {

我正在寻找Django的Swift副本,它允许函数在给定的时间内执行

我需要一个在服务器端Swift上工作的解决方案,这意味着不是所有的基础都是可用的,也不是针对iOS/MAC的。p>
我正在使用Vapor框架。

您有三个主要选项

对于在服务器应用程序中管理的计时器(即重新启动服务器会重置计时器),您可以使用
Dispatch

import Dispatch
let timer = DispatchSource.makeTimerSource()
timer.setEventHandler() {
  // task
}
timer.scheduleRepeating(deadline: .now() + .seconds(3600), interval: .seconds(3600), leeway: .seconds(60))
timer.activate()
类似地,您可以使用Vapor参与者创建的第三方软件包:

import Jobs
Jobs.add(interval: .hours(1)) {
  // task
}

如果您希望在一天中的特定时间独立于服务器的正常运行时间运行该功能,那么就没有什么比cron(或其亲属)更好的了。您的cron作业应该调用二进制文件上的Vapor,或者使用
curl

点击受保护的URL路由,您知道如何在Vapor 3中执行此操作吗?@NevinJethmalani前两个选项不依赖于特定的Vapor版本,应该可以工作。作业看起来很有趣。我担心它已经两年没有更新了。Jobs软件包虽然有点过时,但在Vapor 4上仍然可以很好地工作。我用一段代码回答了这个问题