如何尽快有效地发出数千个网络请求

2024-03-31

我需要从 C# 控制台应用程序发出 100,000 个轻量级(即小内容长度)Web 请求。我可以做到这一点的最快方法是什么(即在尽可能短的时间内完成所有请求)以及我应该遵循哪些最佳实践?我不能一劳永逸,因为我需要捕获响应。

大概我想用asyncweb 请求方法,但是我想知道存储所有的开销有什么影响Task延续和编组将是。

内存消耗不是总体问题,目标是速度。

想必我也想利用所有可用的核心。

所以我可以做这样的事情:

Parallel.ForEach(iterations, i =>
{
    var response = await MakeRequest(i);
    // do thing with response
});

但这不会让我比我的核心数量更快。

我可以:

Parallel.ForEach(iterations, i =>
{
    var response = MakeRequest(i);
    response.GetAwaiter().OnCompleted(() =>
    {
        // do thing with response
    });
});

但我如何让我的程序在ForEach。坚持所有的Tasks and WhenAll使它们感觉臃肿,是否有任何现有的模式或助手可以拥有某种任务队列?

有什么方法可以变得更好,我应该如何处理限制/错误检测?例如,如果远程端点响应缓慢,我不想继续向它发送垃圾邮件。

我明白我还需要做:

ServicePointManager.DefaultConnectionLimit = int.MaxValue

还有什么必要的吗?


The Parallel类不适用于异步循环体,因此您无法使用它。您的循环体几乎立即完成并返回一个任务。这里没有并行性的好处。

这是一个非常简单的问题。使用一个标准解决方案来使用给定的 DOP 异步处理一系列项目(这个很好:http://blogs.msdn.com/b/pfxteam/archive/2012/03/05/10278165.aspx http://blogs.msdn.com/b/pfxteam/archive/2012/03/05/10278165.aspx。使用最后一段代码)。

您需要凭经验确定正确的 DOP。只需尝试不同的值即可。没有理论上的方法可以得出最佳价值,因为它取决于许多因素。

连接限制是您遇到的唯一限制。

response.GetAwaiter().OnCompleted

不确定你试图在那里完成什么......如果你发表评论,我会解释这个误解。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何尽快有效地发出数千个网络请求 的相关文章

  • 访问私人成员[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 通过将类的私有成员转换为 void 指针 然后转换为结构来访问类的私有成员是否合适 我认为我无权修改包含我需要访问的数据成员的类 如果不道德 我
  • 获取按下的按钮的返回值

    我有一个在特定事件中弹出的表单 它从数组中提取按钮并将标签值设置为特定值 因此 如果您要按下或单击此按钮 该函数应返回标签值 我怎样才能做到这一点 我如何知道点击了哪个按钮 此时代码返回 DialogResult 但我想从函数返回 Tag
  • 从父类调用子类方法

    a doStuff 方法是否可以在不编辑 A 类的情况下打印 B did stuff 如果是这样 我该怎么做 class Program static void Main string args A a new A B b new B a
  • 如何避免情绪低落?

    我有一个实现状态模式每个状态处理从事件队列获取的事件 根据State因此类有一个纯虚方法void handleEvent const Event 事件继承基础Event类 但每个事件都包含其可以是不同类型的数据 例如 int string
  • linux perf:如何解释和查找热点

    我尝试了linux perf https perf wiki kernel org index php Main Page今天很实用 但在解释其结果时遇到了困难 我习惯了 valgrind 的 callgrind 这当然是与基于采样的 pe
  • 如何忽略“有符号和无符号整数表达式之间的比较”?

    谁能告诉我必须使用哪个标志才能使 gcc 忽略 有符号和无符号整数表达式之间的比较 警告消息 gcc Wno sign compare 但你确实应该修复它警告你的比较
  • C#:如何防止主窗体过早显示

    在我的 main 方法中 我像往常一样启动主窗体 Application EnableVisualStyles Application SetCompatibleTextRenderingDefault false Application
  • 将目录压缩为单个文件的方法有哪些

    不知道怎么问 所以我会解释一下情况 我需要存储一些压缩文件 最初的想法是创建一个文件夹并存储所需数量的压缩文件 并创建一个文件来保存有关每个压缩文件的数据 但是 我不被允许创建许多文件 只能有一个 我决定创建一个压缩文件 其中包含有关进一步
  • WPF TabControl,用C#代码更改TabItem的背景颜色

    嗨 我认为这是一个初学者的问题 我搜索了所有相关问题 但所有这些都由 xaml 回答 但是 我需要的是后台代码 我有一个 TabControl 我需要设置其项目的背景颜色 我需要在选择 取消选择和悬停时为项目设置不同的颜色 非常感谢你的帮助
  • 从路径中获取文件夹名称

    我有一些路c server folderName1 another name something another folder 我如何从那里提取最后一个文件夹名称 我尝试了几件事 但没有成功 我只是不想寻找最后的 然后就去休息了 Thank
  • Github Action 在运行可执行文件时卡住

    我正在尝试设置运行google tests on a C repository using Github Actions正在运行的Windows Latest 构建过程完成 但是当运行测试时 它被卡住并且不执行从生成的可执行文件Visual
  • for循环中计数器变量的范围是多少?

    我在 Visual Studio 2008 中收到以下错误 Error 1 A local variable named i cannot be declared in this scope because it would give a
  • clang 实例化后静态成员初始化

    这样的代码可以用 GCC 编译 但 clang 3 5 失败 include
  • 当操作繁忙时,表单不执行任何操作(冻结)

    我有一个使用 C 的 WinForms 应用程序 我尝试从文件中读取一些数据并将其插入数据表中 当此操作很忙时 我的表单冻结并且无法移动它 有谁知道我该如何解决这个问题 这可能是因为您在 UI 线程上执行了操作 将文件和数据库操作移至另一个
  • 实体框架 4 DB 优先依赖注入?

    我更喜欢创建自己的数据库 设置索引 唯一约束等 使用 edmx 实体框架设计器 从数据库生成域模型是轻而易举的事 现在我有兴趣使用依赖注入来设置一些存储库 我查看了 StackOverflow 上的一些文章和帖子 似乎重点关注代码优先方法
  • 插入记录后如何从SQL Server获取Identity值

    我在数据库中添加一条记录identity价值 我想在插入后获取身份值 我不想通过存储过程来做到这一点 这是我的代码 SQLString INSERT INTO myTable SQLString Cal1 Cal2 Cal3 Cal4 SQ
  • C - 直接从键盘缓冲区读取

    这是C语言中的一个问题 如何直接读取键盘缓冲区中的数据 我想直接访问数据并将其存储在变量中 变量应该是什么数据类型 我需要它用于我们研究所目前正在开发的操作系统 它被称为 ICS OS 我不太清楚具体细节 它在 x86 32 位机器上运行
  • 为什么 C# Math.Ceiling 向下舍入?

    我今天过得很艰难 但有些事情不太对劲 在我的 C 代码中 我有这样的内容 Math Ceiling decimal this TotalRecordCount this PageSize Where int TotalRecordCount
  • mysql-connector-c++ - “get_driver_instance”不是“sql::mysql”的成员

    我是 C 的初学者 我认为学习的唯一方法就是接触一些代码 我正在尝试构建一个连接到 mysql 数据库的程序 我在 Linux 上使用 g 没有想法 我运行 make 这是我的错误 hello cpp 38 error get driver
  • 使用 libcurl 检查 SFTP 站点上是否存在文件

    我使用 C 和 libcurl 进行 SFTP FTPS 传输 在上传文件之前 我需要检查文件是否存在而不实际下载它 如果该文件不存在 我会遇到以下问题 set up curlhandle for the public private ke

随机推荐

  • 高效的 4x4 矩阵乘法(C 与汇编)

    我正在寻找一种更快 更棘手的方法来用 C 语言将两个 4x4 矩阵相乘 我目前的研究重点是具有 SIMD 扩展的 x86 64 汇编 到目前为止 我已经创建了一个比简单的 C 实现快大约 6 倍的函数 这超出了我对性能改进的预期 不幸的是
  • CSS flexbox 包装未调整大小以适应内容[重复]

    这个问题在这里已经有答案了 一个简化的 plunkr 来显示问题 https plnkr co edit mHTHLEumQ04tInFVAz3z p preview https plnkr co edit mHTHLEumQ04tInFV
  • GCP Cloud Run:无法创建服务

    我正在尝试将 Cloud run 与私有 GKE 集群结合使用 我使用以下命令创建了集群 gcloud beta container clusters create cluster name create subnetwork name c
  • 标准 ORMLite 方法中的 CursorWindowAllocationException

    我需要在数据库中保存一些对象 我在我的 Dao 类中使用这段代码 public void saveActions List
  • 如何知道缩放级别以在谷歌标记集群内显示标记

    好吧 几乎所有内容都在标题中 我有数千个带有谷歌标记集群的标记 不是谷歌标记集群加上 让我知道它是否有帮助 一切都很完美 BUT 当我触发与特定标记相关的事件时 我想单独显示该标记 不再在群集内 由于标记的空间重新分配并不均匀 在某些地方
  • 如何查看Core Data中存储的数据?

    我正在为我的应用程序创建一个核心数据模型 我希望能够查看它的内部 看看我在那里存储了什么 有没有一个比搜索后备存储更简单的方法 我的应该是 SQLite 并从那里读取它 看起来不太像苹果风格 当您的应用程序在模拟器中运行并创建持久存储文件后
  • PDFBox 是否允许从 AcroForm 中删除一个字段?

    我正在使用阿帕奇PDF盒子2 0 8 https mvnrepository com artifact org apache pdfbox pdfbox 2 0 8并试图删除一个字段 但找不到方法来做到这一点 就像我可以用 iText 做的
  • Excel VBA 条件格式未执行

    这很奇怪 我正在从 MS Access 2003 VBA 创建 Excel 2003 电子表格 编码包括条件格式 如果单元格值大于 a value 则为红色 如果小于 a value 则为绿色 即使在生成电子表格时成功创建了 CF 公式 但
  • 从文件中读取最后一行

    我遇到了一个问题 我在 Linux 机器上有一个日志 其中写入了多个正在运行的进程的输出 这个文件有时会变得非常大 我需要读取该文件的最后一行 问题是此操作将经常通过 AJAX 请求调用 当该日志的文件大小超过 5 6MB 时 这对服务器来
  • PySpark PCA:避免 NotConvergedException

    我试图通过 ml linalg 方法使用 PCA 来减少广泛的数据集 51 个特征 约 1300 个个体 如下所示 1 将我的列命名为一个列表 features indi prep df select c for c in indi pre
  • bootstrap下拉菜单根据屏幕位置自动下拉?

    我想知道你们中是否有人已经准备好我所要求的东西 以帮助我摆脱麻烦 我正在寻找的是一个下拉菜单 可以根据其在屏幕上的位置自动添加下拉类 并且当用户滚动或调整窗口大小时也会自动更改 我正在寻找的内容已经在 bootstrap select 插件
  • .net Core amd Roslyn CSharpCompilation,类型“Object”在未引用的程序集中定义

    我正在尝试将一些 net 代码移植到新的 Core 运行时 但在移植一些即时编译时遇到了麻烦 要恢复 它总是要求我引用 System Runtime 和 mscorlib 但不知道如何引用它们 附带说明一下 我无法引用 Framework
  • 如何修复致命异常:Resources$NotFoundException:资源 ID #0x20c003b DeviceFormFactor.java 第 107 行 org.chromium.ui.base.DeviceFormFactor.a

    在 crashlytics 中得到这个 不知道问题出在哪里 Fatal Exception android content res Resources NotFoundException Resource ID 0x20c003b at a
  • 使用 JavaScript 加密本地存储的数据

    当我学习 JavaScript 和 HTML5 时 我正在尝试构建一个基本的测验应用程序 该应用程序会提出一些可在移动网络上运行的多项选择题 并且也可以作为使用 PhoneGap 的应用程序 当提出问题时 结果会存储在本地 我希望 Phon
  • java.lang.NoClassDefFoundError: org.joda.time.DateTime

    在 android 4 3 API 18 上启动应用程序时出现此错误 没有编译错误 并且库已添加到build gradle中 compile joda time joda time 2 9 2 在 android api 23 上工作没有问
  • Neo4j cpu 卡在 GC 上

    突然间 工作了一个月后 CPU 几乎没有使用 1 到 5 之间 neo4j 服务器在垃圾收集时 cpu 占用率达到 100 我在 ubuntu 4 处理器服务器上运行 neo4j entherprise 2 0 3 未嵌入 这是我的 neo
  • 将 XSD 导入 OpenAPI

    我的 XSD 文件中有一些模型定义 我需要从 OpenApi 定义中引用这些模型 由于文件太大 手动重新建模是不可能的 我需要将其放入构建系统中 这样如果 XSD 发生更改 我可以为 OpenApi 重新生成模型 架构 我尝试过并且几乎有效
  • Flutter - 每次关闭应用程序时存储对象列表的最佳方式?

    情况 我对 Flutter 和移动开发都很陌生 因此对 Dart 不太了解 我已经从有类似问题的人那里阅读了一些解决方案 但没有设法将这些解决方案应用于我自己的事情 问题 我有一个待办事项应用程序 它有 2 个对象列表 我想在用户重新打开应
  • 在 Eclipse/RCP 中定位工具栏

    我正在开发我的小型 RCP 应用程序 它需要一个自定义透视切换器来控制用户可以访问哪些视图 所以我在这里尝试添加一个带有几个按钮的工具栏来切换视角 我认为对这些内容进行一些控制的最佳方法是在 Application ActionBar Ad
  • 如何尽快有效地发出数千个网络请求

    我需要从 C 控制台应用程序发出 100 000 个轻量级 即小内容长度 Web 请求 我可以做到这一点的最快方法是什么 即在尽可能短的时间内完成所有请求 以及我应该遵循哪些最佳实践 我不能一劳永逸 因为我需要捕获响应 大概我想用async