我们有一个Vapor API,它使用一个Web Worker、一个队列Worker和一个调度队列Worker.每个工人都有相同的configure(_ app: Application)功能.

在这个函数中,我希望找到Worker的类型,而不是队列Worker的Web或On.

// 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(),但只对网络工作者.

目前,所有工作人员都在try 迁移数据库,显然,其中两个失败了.

推荐答案

您可以使用环境变量来执行此操作.在你的初创企业中使用这样的东西:

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

仅当实例具有正确的变量/值时才运行迁移,方法是将以下内容放入:

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

有关环境变量的所有信息,请参见here.

Swift相关问答推荐

在列表项内的NavigationLink中的按钮无法正常工作

动画过程中的SwiftUI重绘视图

如何在 AppDelegate for Cocoa macOS 中创建 mainMenu 和菜单项?

ForEach within List:模式的好处?

Swift 并发:@MainActor 对象上的通知回调

RxSwift 中 Single.just(...) 和 Observable.just(...) 之间有区别吗?

按钮图像不会立即刷新

在 xcode 13 中的构建之间保持可访问性权限

Apple 的自然语言 API 返回意外结果

Swift在十进制格式中失go 精度

FirebaseStorage:如何删除目录

NSFontAttributeName 已更改为 String

为什么 swift 中的类没有存储类型属性?

Swift 覆盖实例变量

使 struct 可散列?

如何在 SwiftUI 中打开 ImagePicker?

在 unwind segue 之后执行 push segue

Swift 2.0 中的 do { } catch 不处理从这里抛出的错误

iOS 视图可见性消失了

swift中的匿名类