我正在调用 Phoenix 路线的电话,其工作往往需要 10 多秒。这太长了,Phoenix 超时。
这个问题可以通过 websockets 轻松解决,但是我想知道它是如何使用纯 REST 完成的。
什么是 Phoenix 流程模型?是否所有请求都进入工作池,只是即使使用池长时间阻塞也是不明智的?
最佳答案
I would like to know how it's done with plain REST
您可以提高代码的效率,增加网络服务器的超时时间,或者两者兼而有之。
What is the Phoenix process model? Do all requests go to a worker pool
不,请求不会进入工作池。
对于 Web 服务器,Phoenix 当前使用 cowboy .因此,当您点击 Phoenix 端点时,它实际上是在点击底层牛仔实现,这将为您的请求生成一个新的 Erlang 进程。然后由 Erlang 调度程序实际为您的进程提供 CPU 时间。
关于elixir - 阻止/长时间运行的 Phoenix 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42661290/