3

是否有可能在服务器端 Swift 框架上调度任务,最好是 Kitura?

我需要安排任务;例如,每天凌晨 3 点擦除数据库。

4

3 回答 3

9

至少在 Kitura 中,我们没有为此提供特殊功能。

您可以考虑使用的一件事是 Dispatch,它非常适合您每天凌晨 3 点删除数据库的示例。您可以创建一个 DispatchSourceTimer,它在某个时间间隔后一次或重复地调度一些代码。

DispatchSourceTimer.scheduleOneshot(deadline: DispatchTimer, leeway: DispatchTimeInterval)
DispatchSourceTimer.scheduleRepeating(deadline: DispatchTime, interval: DispatchTimeInterval, leeway: DispatchTimeInterval)
于 2016-11-22T19:41:59.260 回答
0

我通过添加一个触发动作的端点解决了这个问题。然后我有一个 cron 任务,它触发 curl 命令在适当的时间到达该端点。

我通过代理通过 nginx 与外界的所有通信来保护这一点,并在我的 nginx 配置中阻止这个端点。基于 Swift 的服务器应用程序仅服务于本地主机,它与 curl 命令一起使用,并提供给 nginx,但对于服务器之外的任何内容都被阻止。

于 2016-12-14T19:41:27.893 回答
0

我花了一些时间来完成这项工作,所以这就是我所拥有的:

    let timer = DispatchSource.makeTimerSource()
    timer.setEventHandler() {
        // Coded I want to execute after a delay
    }

    let now = DispatchTime.now()
    let delayInSeconds:UInt64 = 5
    let deadline = DispatchTime(uptimeNanoseconds: now.uptimeNanoseconds + delayInSeconds*UInt64(1e9))

    timer.scheduleOneshot(deadline: deadline)
    timer.activate()

这有点麻烦。欢迎提出想法。

于 2017-04-10T09:15:25.210 回答