Server-Side Swift中的计划任务(Kitura,Vapor,Zewo等)

时间:2016-11-22 19:28:16

标签: swift vapor kitura

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

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

3 个答案:

答案 0 :(得分:7)

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

您可以考虑使用的一件事是Dispatch,它可以很好地适用于每天凌晨3点删除数据库的示例。您可以创建DispatchSourceTimer,在一段时间间隔之后重复调度一些代码。

DispatchSourceTimer.scheduleOneshot(deadline: DispatchTimer, leeway: DispatchTimeInterval)
DispatchSourceTimer.scheduleRepeating(deadline: DispatchTime, interval: DispatchTimeInterval, leeway: DispatchTimeInterval)

答案 1 :(得分:0)

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

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

答案 2 :(得分: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()

这有点麻烦。欢迎提出意见。