我们有一个 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()
,但仅限于网络工作者。
目前所有工作人员都尝试迁移数据库,但其中两个显然失败了。
您可以使用环境变量来执行此操作。使用类似的东西:
WEBWORKER=1 /home/vapor/myapp/.build/release/Run serve --env production
仅当实例具有正确的变量/值时才运行迁移:
if let worker = Environment.get("WEBWORKER") {
try app.autoMigrate().wait()
}
有关环境变量的所有信息,请参阅此处。