如何异步调用列表中的多个 URL

2023-11-23

我有几十万个 URL 需要调用。这些是对应用程序服务器的调用,应用程序服务器将处理它们并将状态代码写入表中。我不需要等待响应(成功/失败),只需等待服务器收到请求。我还希望能够指定一次可以运行多少个并发作业,因为我还没有计算出 tomcat 可以处理多少个并发请求。

这是我到目前为止所得到的,基本上取自其他人尝试做类似的事情,只是不使用 url 调用。该文本文件中的每个 url 各占一行。网址如下所示:

http://webserver:8080/app/mwo/services/create?server=ServerName&e1user=admin&newMWONum=123456&sourceMWONum=0&tagNum=33-A-1B

和代码:

$maxConcurrentJobs = 10
$content = Get-Content -Path "C:\Temp\urls.txt"

foreach ($url in $content) {
    $running = @(Get-Job | Where-Object { $_.State -eq 'Running' })
    if ($running.Count -le $maxConcurrentJobs) {
        Start-Job {
             Invoke-WebRequest -UseBasicParsing -Uri $using:url
        }
    } else {
         $running | Wait-Job -Any
    }
    Get-Job | Receive-Job
}

我遇到的问题是每个“作业”都会出现 2 个错误,我不知道为什么。当我转储 url 数组 $content 时,它看起来很好,当我一一运行 Invoke-WebRequest 时,它们工作正常,没有错误。

126    Job126          BackgroundJob   Running       True            localhost            ...                
Invalid URI: The hostname could not be parsed.
    + CategoryInfo          : NotSpecified: (:) [Invoke-RestMethod], UriFormatException
    + FullyQualifiedErrorId : System.UriFormatException,Microsoft.PowerShell.Commands.InvokeRestMethodComman 
   d
    + PSComputerName        : localhost

Invalid URI: The hostname could not be parsed.
    + CategoryInfo          : NotSpecified: (:) [Invoke-RestMethod], UriFormatException
    + FullyQualifiedErrorId : System.UriFormatException,Microsoft.PowerShell.Commands.InvokeRestMethodComman 
   d
    + PSComputerName        : localhost

任何帮助或替代实现将不胜感激。我愿意不使用 powershell,但我仅限于 Windows 7 桌面或 Windows 2008 R2 服务器,并且我可能会使用 url 中的 localhost 在服务器本身上运行最终脚本,以减少网络延迟。


使用作业会产生大量开销,因为每个新作业都会产生一个新进程。

Use 运行空间反而!

$maxConcurrentJobs = 10
$content = Get-Content -Path "C:\Temp\urls.txt"

# Create a runspace pool where $maxConcurrentJobs is the 
# maximum number of runspaces allowed to run concurrently    
$Runspace = [runspacefactory]::CreateRunspacePool(1,$maxConcurrentJobs)

# Open the runspace pool (very important)
$Runspace.Open()

foreach ($url in $content) {
    # Create a new PowerShell instance and tell it to execute in our runspace pool
    $ps = [powershell]::Create()
    $ps.RunspacePool = $Runspace

    # Attach some code to it
    [void]$ps.AddCommand("Invoke-WebRequest").AddParameter("UseBasicParsing",$true).AddParameter("Uri",$url)

    # Begin execution asynchronously (returns immediately)
    [void]$ps.BeginInvoke()

    # Give feedback on how far we are
    Write-Host ("Initiated request for {0}" -f $url)
}

正如链接的 ServerFault 帖子中所述,您还可以使用更通用的解决方案,例如Invoke-Parallel,它基本上完成了上面的事情

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

如何异步调用列表中的多个 URL 的相关文章

  • powershell循环持续检查服务器是否启动

    我想运行一个脚本来检查 5 台服务器是否已启动并根据特定服务正在运行 如果该服务正在运行 那么我们就知道该服务器已启动并可访问 如果它没有回复 那么我希望它继续检查 这是我到目前为止得到的 Get Service LANMANSERVER
  • 通过快捷方式更改桌面的 Powershell 脚本

    关于为什么从 w in PS 运行时有效 但从定义为以下的快捷方式运行时无效的任何想法和建议 SystemRoot system32 WindowsPowerShell v1 0 powershell exe File C Users bi
  • 我可以在 Emacs 的 shell 模式下使用 PowerShell 吗?

    我可以在 emacs 的 shell 模式下使用 powershell 作为 shell 吗 How 请参阅 Jeffrey Snover 的博客文章在 Emacs 内运行的 PowerShell http blogs msdn com p
  • 将服务器添加到 SQL Management Studio

    我想将不同服务器上的一堆 SQL 2000 2005 的混合 服务器实例添加到我的 SSMS SQL Managment Studio 注册服务器 我正在遵循本教程here http sev17 com 2008 12 registerin
  • 使用 PowerShell 修改 Visual Studio 解决方案和项目文件

    我们目前正在重新组织源代码 将内容移动到新目录中 结构 这会影响我们的 Visual Studio 解决方案和项目文件 其中诸如程序集引用 可能的输出目录 构建前和构建后事件等 必须更新以反映我们的更改 由于我们有许多解决方案和项目 我希望
  • 防止集成终端自动打开

    每当我在 VS Code 中打开 PowerShell 脚本时 集成终端就会打开 如何防止集成终端自动打开 我搜索了 终端 的设置 但没有发现与自动启动相关的内容 VSCode 会记住您的上一次会话 因此 如果关闭终端并退出 VSCode
  • 无法在 Powershell 中运行 R.exe

    我经常发现在命令行 Windows 上运行 R 更有用 然而 当我在 Powershell 中尝试时 我往往会遇到问题 但这可以通过第一次运行轻松克服cmd然后就可以了 这是我执行此操作时遇到的错误R CMD BATCH Invoke Hi
  • “Microsoft.AspNet.Server.Kestrel”不包含适合入口点的静态“Main”方法

    我正在尝试运行最新的Asp Net 5 个示例 https github com aspnet Home 当前为 1 0 0 rc1 update1 来自 Windows 10 上的 powershell 我将活动和默认 DNX 设置为 C
  • () 和 $() 之间的区别[重复]

    这个问题在这里已经有答案了 有什么区别 Write Host Get Date just paren and Write Host Get Date dollar paren 括号内的内容可以是任何内容 仅举一个简单的示例 两者有什么区别吗
  • 从 Powershell 更新计划任务脚本

    我正在尝试编写一个每天运行一次的 Powershell 脚本 它将执行的众多功能之一是确保脚本本身是最新的 我的问题是 由于我对脚本进行了版本控制 因此我需要更新从脚本中创建的计划任务 我在这里考虑了两种不同的方法 其中我也无法弄清楚 我最
  • 全局变量用例

    我有几个脚本和模块 它们使用全局变量来完成很多事情 我的日志记录可以采用以下三种形式之一 简洁 详细和验证 没有实际操作的详细日志记录 仅验证提供的数据 我还有许多函数 它们根据运行的上下文 用户或机器 而做出不同的响应 并且正在执行的操作
  • 使用变量作为启动进程的文件路径参数

    我想运行一个 exe 它可能位于多个位置 runpath servicepackfolder SQLServer2008SP1 KB968369 IA64 ENU exe Start Process FilePath runpath arg
  • 如何从 PowerShell 指定应用程序池身份用户和密码

    我在自动化 Web 应用程序设置和使用应用程序池标识适当配置 IIS 方面遇到了很多困难 我在用 PowerShell 编写的 Web 应用程序部署脚本中执行此操作 我的要求是我需要 PowerShell 脚本将应用程序池身份用户设置为特定
  • Powershell 查询的升序和降序

    下面的查询将列出 powershell 中的 cmdlet get command CommandType cmdlet Group Object Property verb 因为我需要按降序对列数进行排序 然后按升序对列进行命名 以下查询
  • 使用 powershell 编辑 XML

    好吧 我感觉自己像个大白痴 为了工作中的管理目的 我使用 Powershell 已经有一段时间了 也就是说 编写脚本不是我的强项 现在 我正在尝试编写一个 PS 脚本 将一个部分添加到一堆机器上的 XML 中 以添加设置来解决我们在某个应用
  • 使用 powershell 版本 2 查询 AD

    我们有由 Windows 7 和 Windows 10 组成的混合桌面操作系统 我有一个登录脚本 该脚本从每次用户登录时运行的 powershell 脚本收集各种信息 Windows 7 powershell 仅是版本 2 这意味着我无法使
  • 带有多个附件的电子邮件

    我正在为服务台编写一个 PowerShell 脚本 以便在将 userhome 文件夹从服务器迁移到 NAS 设备时使用 帮助台用户将用户名输入到 userhomelist txt 文件中 我的问题是我无法获取脚本来附加所有日志文件 电子邮
  • 抑制数组列表添加方法管道输出

    我正在使用数组列表来构建日志项序列以供稍后记录 工作起来很不错 但是 Add 方法将当前索引发送到管道 我可以通过将其发送到 null 来解决这个问题 如下所示 strings Add junk gt null 但我想知道是否有某种机制可以
  • 如何使用卸载路径卸载 MSI

    我正在尝试获取一组应用程序的卸载路径并卸载它们 到目前为止 我得到了卸载路径列表 但我很难真正卸载这些程序 到目前为止我的代码是 app msi1 msi2 msi3 msi4 Regpath HKLM Software Microsoft
  • 是否可以从 nuget powershell 设置项目的输出路径属性?

    我想从 nuget powershell 控制台设置 Visual Studio 项目属性 输出路径 怎么可能呢 我已经发现一篇博文 http weblogs asp net soever archive 2011 05 15 set th

随机推荐

  • 反射会带来什么风险? (中等信任度)

    中等信任托管环境中缺乏反思似乎造成很多问题适用于许多流行的 Web 应用程序 Why is 反射权限默认情况下禁用中等信任 反射在共享托管环境中会带来什么风险 随机参考 参见MSDN 如何在 ASP NET 2 0 中使用中等信任 反射允许
  • Django <-> SQL Server 2005,文本编码问题

    我正在尝试使用以下方法在 MS SQL Server 2005 上存储 Django 数据 http code google com p django pyodbc pyodbc FreeTDS 只要我存储由 ASCII 字符组成的字符串
  • 使用 CABasicAnimation 对帧属性进行动画处理

    我正在尝试对此进行精确的 翻译 UIView基于块的动画代码 UIView animateWithDuration 0 5 delay 0 0 options UIViewAnimationOptionCurveEaseInOut anim
  • 如何从 SQL Server 上的一张表中删除 8,500,000 条记录

    删除活动 其中 unt uid 为 null 将是最快的方法 但在该语句完成之前没有人可以访问数据库 表 因此这是不行的 我定义了一个游标来在工作时间完成此任务 但无论如何对生产力的影响很大 那么如何删除这些记录才能保证这个数据库的正常使用
  • 如何计算弹跳角?

    我玩了一段时间 但我就是想不通 我做了一个发射导弹的坦克 当导弹击中墙壁时 我希望它们弹开 但我希望它们弹回正确的角度 现在我没有任何障碍物 导弹一超出范围就会弹开viewportRectangle I made 我正在寻找的解决方案相当先
  • 如何自定义WebRTC视频源?

    有人知道如何更改WebRTC https cocoapods org pods libjingle peerconnection 视频来源 我正在开发一个屏幕共享应用程序 目前 我在 CVPixelBuffer 中实时检索渲染的帧 有人知道
  • 如果CHAR_BIT != 8,其他类型的大小是多少?

    C 标准要求sizeof char to be 1 无论实际需要多少位 其他数据类型是否以以下方式衡量 bytes or chars万一这些不一样呢 基本上 假设CHAR BIT is 16 would sizeof int16 t 等于1
  • Delphi线程等待数据,处理它,然后恢复等待

    我需要在Delphi中创建一个具有以下特征的线程 等待主线程将数据添加到共享队列 处理队列中的所有数据 将结果返回到主线程 对于最后一部分 我将仅将消息发送到主窗口 处理非常耗时 因此当工作线程处理先前的条目时 可能会将新数据添加到队列中
  • 快速在地图上添加注释

    尝试在地图上做一些注释 但无法绕过它 我正在使用的代码是 Names names Ben Big Hawk Enot Wiltons Scott s The Laughing Latitudes Longitudes coordinates
  • Django 轻松构建 RESTful 界面

    我正在为一个新项目寻找学习 Django 的借口 通常 我喜欢构建 RESTful 服务器端接口 其中 URL 映射到在某些平台独立上下文 例如 XML 或 JSON 中吐出数据的资源 这是 在不使用框架的情况下 这样做相当简单 但是其中一
  • android 的样式:uiOptions="splitActionBarWhenNarrow"?

    有谁知道使用 sdk 版本 14 时用于分割操作栏的样式资源android uiOptions splitActionBarWhenNarrow 对于正常的ActionBar我可以用
  • 权限更改需要手动更新

    如果应用程序更改了权限 Android 市场通常会将其标记为手动更新 如果更改只是为了删除应用程序以前所需的权限 这是真的吗 或者权限的任何更改是否会将应用程序标记为手动更新 EDIT 我今天尝试了一下 删除了应用程序的权限并将其投放到市场
  • 如何手动编写(shell)词法分析器

    我正在开发一个 shell 一个类似 bash 的小型 shell 没有脚本 如果 while 我必须手工制作词法分析器 解析器 LL 所以词法分析器将转换命令 字符 cmd 到链表 t 列表 列表 LL 解析器将转换链表 t 列表 列表
  • 将元素从 std::vector 移动到另一个元素

    如何将一些元素从第一个向量移动到第二个向量 并且这些元素将从第一个向量中删除 如果我正在使用std move 未从第一个向量中删除的元素 这是我写的代码 move xSpaces1 begin 7 xSpaces1 end back ins
  • 采用隐式 CanBuildFrom 的方法不适用于 eta 扩展?

    我有以下方法 def firstAndLast CC A That seq CC implicit asSeq CC gt Seq A cbf CanBuildFrom CC A That That val b cbf seq b seq
  • 网络套接字入门

    我对了解 HTML5 中称为 Web 套接字的新功能非常感兴趣 我对此进行了调查并提出了一些问题 看来 在我开始将这项新技术应用到我的 Web 应用程序中之前 我需要有一个支持它的 Web 服务器 这是否涉及下载某些内容并将其安装在所述服务
  • 使用 httr 对 github 私有存储库进行身份验证

    我正在尝试使用 Github 上的私有存储库httr 如果我添加我的 github 令牌 作为环境变量存储在GITHUB TOKEN httr GET https api github com repos aammd miniature m
  • Android 可调整大小的矩形裁剪

    我需要使用基于用户触摸事件的可调整大小的矩形来裁剪图片 我这样做是因为并非所有设备都支持裁剪意图功能 因此我正在创建自己的功能 我将原始图像作为位图 并将其作为图像视图显示在屏幕上 现在我接下来需要做的是有一个矩形 已经知道它需要的大小 可
  • 为什么 UISearchController 改变导航栏颜色?

    我已经使用 Xcode 11 iOS 13 在故事板中定义了 2 个视图控制器的示例项目上对此进行了测试 呈现 视图控制器嵌入在导航控制器中 并在viewWillAppear 搜索 视图控制器添加了一个UISearchController
  • 如何异步调用列表中的多个 URL

    我有几十万个 URL 需要调用 这些是对应用程序服务器的调用 应用程序服务器将处理它们并将状态代码写入表中 我不需要等待响应 成功 失败 只需等待服务器收到请求 我还希望能够指定一次可以运行多少个并发作业 因为我还没有计算出 tomcat