在运行时检测 Vapor Worker 的类型

问题描述 投票:0回答:1

我们有一个 Vapor API,它使用网络工作线程、队列工作线程和计划队列工作线程。每个工人都有相同的

configure(_ app: Application)
功能。

在这个函数中,我想找到工作人员的类型,而不是网络工作人员或队列工作人员。

// configures the worker
public func configure(_ app: Application) throws {
    // clear every middleware
    app.middleware = .init()

    // HERE I want to differentiate the worker
    if web worker {
        // do that
    } else {
        // do something other
    }
}

Application
中有没有办法或方法告诉我它的类型?

我们的主要问题是,我们想要

try app.autoMigrate().wait()
,但仅限于网络工作者。

目前所有工作人员都尝试迁移数据库,但其中两个显然失败了。

swift vapor
1个回答
0
投票

您可以使用环境变量来执行此操作。使用类似的东西:

WEBWORKER=1 /home/vapor/myapp/.build/release/Run serve --env production

仅当实例具有正确的变量/值时才运行迁移:

if let worker = Environment.get("WEBWORKER") {
    try app.autoMigrate().wait()
}

有关环境变量的所有信息,请参阅此处

© www.soinside.com 2019 - 2024. All rights reserved.