我想在我的rails应用程序中实现CORS,所以我用Google搜索了rack-cors gem.我按照README中的说法做了一切,相应地更新了Gemfile并更新application.rb如下:
module YourApp
class Application < Rails::Application
# ...
config.middleware.use Rack::Cors do
allow do
origins '*'
resource '*', :headers => :any, :methods => [:get, :post, :options]
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
但它没有用.不管我做了什么,在浏览器控制台中我不断收到消息:
XMLHttpRequest cannot load https://somewebsite.com. Origin http://0.0.0.0:3000 is not allowed by Access-Control-Allow-Origin.
看完这个博客帖子和问题在github上,我意识到,机架CORS中间件在中间件堆栈事项可能位置.所以我按照github问题的说法做了:
module YourApp
class Application < Rails::Application
# ...
config.middleware.insert 0, Rack::Cors do
allow do
origins '*'
resource '*', :headers => :any, :methods => [:get, :post, :options]
end
end
end …Run Code Online (Sandbox Code Playgroud) 我试图弄清楚到底会ThreadPool.SetMinThreads产生什么影响。
根据官方文件说
设置在切换到管理线程创建和销毁的算法之前,当发出新请求时,线程池按需创建的最小线程数。
根据我的理解,作为一名开发人员,我应该能够控制如何按需旋转新线程的机制,因此它们会被创建并在空闲状态下等待,例如在我期望收到请求负载的情况下在特定时间。
这正是我最初认为SetMinThreads方法的设计目的。
但当我开始实际使用它时 - 我得到了非常奇怪的结果。
所以我有我的 ASP.NET .NET5 应用程序,并且在控制器操作中我有如下代码:
ThreadPool.SetMinThreads(32000, 1000);
当然,我直觉地期望运行时为我创建 32K 工作线程和 1000 个 io 线程。
当我这样做,然后调用其他方法 - Process.GetCurrentProcess().Threads获取所有进程的线程,并打印它们的统计信息,我得到这样的东西
Standby - 17
Running - 4
Run Code Online (Sandbox Code Playgroud)
我认为应用程序可能需要一些时间来旋转新线程,所以我尝试了不同的延迟,1 分钟、5 分钟和 10 分钟。
但结果总是保持不变,我得到15-20 Standby和2-4 Running。
那么接下来的逻辑问题是——SetMinThreads方法到底在做什么?MSDN提供的描述似乎没有太大帮助。
还有另一个逻辑问题 - 如果我想强制 dotnet 在空闲状态下旋转 32K 新线程怎么办 - dotnet 是否为此提供了任何机制?