static func main() async throws {
                  
                  
                          NIOSingletons.groupLoopCountSuggestion = 1 // set core count
                  
                  
                          let app = try await Application.make()
                  
                  
                          
                  
                  
                          app.databases.use(.postgres(configuration: .init(hostname: "localhost", username: "postgres", database: "test", tls: .prefer(try .init(configuration: .clientDefault)))), as: .psql)
                  
                  
                          
                  
                  
                          app.get("test") { req async throws -> Int in
                  
                  
                              return try await User.query(on: req.db).count()
                  
                  
                          }
                  
                  
                          
                  
                  
                          try await app.execute()
                  
                  
                          try await app.asyncShutdown()
                  
                  
                      }
                  
                  
                  }
                  
                  
                  
                  
                  
                  1. Если вручную установить количество ивент лупов = 1
                  
                  
                  2. Дёрнуть /test эндпоинт
                  
                  
                  3. Ctrl+C - не завершает процесс
                  
                  
                  
                  
                  
                  Если не дёргать /test или ивент лупов > 1, тогда Ctrl+C - завершает процесс
                  
                  
                  Возможно трабла в шатдауне базы?
                  
                  
                
Стикер
Тэкс, уже этот код почему-то работает нормально
Дом осел, фундамент устоялся :)
Нашёл чего не хватало: NIOSingletons.unsafeTryInstallSingletonPosixEventLoopGroupAsConcurrencyGlobalExecutor() @main enum Entrypoint { static func main() async throws { NIOSingletons.groupLoopCountSuggestion = 1 let app = try await Application.make() let success = NIOSingletons.unsafeTryInstallSingletonPosixEventLoopGroupAsConcurrencyGlobalExecutor() print("Running with \(success ? "SwiftNIO" : "standard") Swift Concurrency default executor") app.databases.use(.postgres(configuration: .init(hostname: "localhost", username: "postgres", database: "test", tls: .prefer(try .init(configuration: .clientDefault)))), as: .psql) app.get("test") { req async throws -> Int in return try await User.query(on: req.db).count() } try await app.execute() try await app.asyncShutdown() } } Если запускается на SwiftNIO Swift Concurrency default executor и дёргаем test эндпоинт - тогда приложение не завершается после Ctrl+C
Обсуждают сегодня