gpt4 book ai didi

swift - vapor参数解码挂掉HTTP请求

转载 作者:可可西里 更新时间:2023-11-01 01:08:32 25 4
gpt4 key购买 nike

我有一个奇怪的问题。我在 digital ocean 机器上的 docker 内部运行 Steam 。除了 PATCH 和 DELETE 请求外,我的所有请求都按预期工作。

在下面的代码中,patch enter 将被记录,但不会记录 parameter decode。HTTP 请求似乎永远运行,其他并行请求是不可能的

func patch(_ req: Request) throws -> Future<Manufacturer> {
let logger = try req.make(Logger.self)
logger.info("patch enter")
return try req.parameters.next(Manufacturer.self).flatMap { manufacturer in
logger.info("parameter decode")
return try req.content.decode(Manufacturer.self).flatMap { patchManufacturer in
logger.info("content decode")
manufacturer.name = patchManufacturer.name
return manufacturer.save(on: req)
}
}
}

使用 req.parameters.next(ModelName.self).flatMap 的所有其他方法在我的 digital ocean docker 机器中也不起作用。

类似于简单的创建作品:

func create(_ req: Request) throws -> Future<Manufacturer> {
return try req.content.decode(Manufacturer.self).flatMap { manufacturer in
return manufacturer.save(on: req)
}
}

所以我认为一定有问题:

return try req.parameters.next(Manufacturer.self).flatMap { manufacturer in

奇怪的部分是:当我在我的 mac 上启动相同的 docker compose 配置时,一切都按预期工作 - 没有挂起的 http 请求。

我不知道该怎么做才能找到错误,有人可以帮我吗?如果我应该提供一些文件来解决问题,请留言,我会更新帖子。

谢谢!

最佳答案

我从 Vapor Discord Chat 中的好人那里得到了解决方案:https://discord.gg/BnXmVGA

感谢@vzsg 和@jimmya92。

vapor 应用在​​最小的 digital ocean 水滴上运行:

  • 1GB 内存
  • 1vCPU
  • 25GB 固态硬盘

there's a known issue that Fluent's default configuration limits the number of connections too much on single core systems which can lead to deadlocks like this drop this in configure.swift to work around it:

let poolConfig = DatabaseConnectionPoolConfig(maxConnections: 16)
services.register(poolConfig)

关于swift - vapor参数解码挂掉HTTP请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51873680/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com