gpt4 book ai didi

c# - 用于大量、低延迟 http 请求的异步与线程

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

我需要执行大量 HTTP(对于金融应用程序,主机不提供更好的 API)请求(大约 每秒 800 次)和处理他们的响应(在 JSON 中,通常不超过 1kb 大)低延迟(只做反序列化和比较一些值)最终 < em>根据响应进行另一个请求(响应和下一个请求之间的时间不应超过 1-2 毫秒)。

目前,我使用带有同步请求的传统线程,其中大约 50% 的线程仅在 40-60 秒后执行请求,而另外 50% 的线程始终在请求
虽然这种方法在处理每秒 50-100 个请求时效果很好,但我发现每秒处理 800 个请求时,响应与线程的下一个请求之间的时间太长(通常为 50-200 毫秒)。

因为我想修复我想问的问题:

<强>1。异步操作是更好的方法吗?阅读了很多有关通过异步获得的可扩展性和响应能力的信息,但不确定它是否适合低延迟(上下文切换、任务创建等开销)
<强>2。我可以调整 Thread 方法吗? (独立于 Quest #1) 我正在考虑在线程当前处理响应时给予线程更高的优先级(超过 .ThreadPriority ),但这并没有真正解决/也许完全停止执行处理时的其他线程
(3. 我应该为 HTTP 请求使用哪个类/库?) 目前正在使用 HttpWebRequest s,比 HttpClient 快一点那些在我的测试中,还是我应该使用其他东西?

任何帮助将不胜感激

最佳答案

我仔细研究并解决了这个确切的问题(从服务器并行下载大量 XML 文件),根据我的经验,使用 Async 的速度大约快 20%-50%,具体取决于文件的大小。

不幸的是,这是几个月前的事了,但我在每个请求中都使用了一个 WebClient,并且只执行了一个 WebClient.DownloadString,所以如果这是您的用例,它可能适合您。

真正的答案是:尝试两者并对其进行分析。在两者之间切换应该不难!

关于c# - 用于大量、低延迟 http 请求的异步与线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25253306/

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