我正在寻找与 Django 的Celery对应的 Swift 版本,它允许函数在每个给定的时间内执行。
我需要一个适用于服务器端 Swift 的解决方案,这意味着并非所有 Foundation 都可用,并且某些不适用于 iOS / Mac。
我正在使用 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()
Run Code Online (Sandbox Code Playgroud)
同样,您可以使用由 Vapor 贡献者创建的第三方Jobs包:
import Jobs
Jobs.add(interval: .hours(1)) {
// task
}
Run Code Online (Sandbox Code Playgroud)
如果您希望该功能在一天中的特定时间运行,而不受服务器正常运行时间的影响,那么就不会受到打击cron(或其亲属)。您的 cron 作业应该在二进制文件上调用 Vapor命令,或者使用curl.
| 归档时间: |
|
| 查看次数: |
1398 次 |
| 最近记录: |