如何使用多个变量并行运行多个curl请求

2023-11-29

Set Up

我目前有以下脚本可以用来下载文件curl,使用具有多个变量的 ref 文件。当我创建脚本时,它适合我的需求,但是随着参考文件变得更大并且我通过以下方式请求的数据curl生成需要更长的时间,我的脚本现在需要太多时间才能完成。

客观的

我希望能够更新这个脚本,所以我有curl在多个文件准备好时请求并下载它们 - 而不是等待每个文件被顺序请求和下载。

我环顾四周,发现我可以使用xargs or parallel然而,为了实现这一目标,根据我过去看到的问题、YouTube 视频和其他论坛帖子,我一直无法找到一个示例来解释是否可以使用多个变量来实现这一目标。

有人可以确认这是否可行以及哪种工具更适合实现这一目标?我当前的脚本配置是否正确,或者我是否需要对其进行大量修改以添加这些命令?

我怀疑这可能是以前提出过的问题,但我可能只是没有找到正确的问题。

帐户列表.tsv

client1 account1    123 platform1   50
client2 account1    234 platform1   66
client3 account1    344 platform1   78
client3 account2    321 platform1   209
client3 account2    321 platform2   342
client4 account1    505 platform1   69

下载.sh

#!/bin/bash
set -eu

user="user"
pwd="pwd"
D1=$(date "+%Y-%m-%d" -d "1 days ago")
D2=$(date "+%Y-%m-%d" -d "1 days ago")
curr=$D2
cheese=$(pwd)

curl -o /dev/null -s -S -L -f -c cookiejar 'https://url/auth/' -d name=$user -d passwd=$pwd

while true; do

        while IFS=$'    ' read -r client account accountid platform platformid
        do
                curl -o /dev/null -s -S -f -b cookiejar -c cookiejar 'https://url/auth/' -d account=$accountid
                curl -sSfL -o "$client€$account@$platform£$curr.xlsx" -J -b cookiejar -c cookiejar "https://url/platform=$platformid&date=$curr"
        done < account-list.tsv

        [ "$curr" \< "$D1" ] || break
        curr=$( date +%Y-%m-%d --date "$curr +1 day" ) ## used in instances where I need to grade data for past date ranges.

done

exit

使用 GNU Parallel 并行获取 100 个条目看起来像这样:

#!/bin/bash
set -eu

user="user"
pwd="pwd"
D1=$(date "+%Y-%m-%d" -d "1 days ago")
D2=$(date "+%Y-%m-%d" -d "1 days ago")
curr=$D2
cheese=$(pwd)

curl -o /dev/null -s -S -L -f -c cookiejar 'https://url/auth/' -d name=$user -d passwd=$pwd

fetch_one() {
    client="$1"
    account="$2"
    accountid="$3"
    platform="$4"
    platformid="$5"

    curl -o /dev/null -s -S -f -b cookiejar -c cookiejar 'https://url/auth/' -d account=$accountid
    curl -sSfL -o "$client€$account@$platform£$curr.xlsx" -J -b cookiejar -c cookiejar "https://url/platform=$platformid&date=$curr"
}
export -f fetch_one

while true; do
    cat account-list.tsv | parallel -j100 --colsep '\t' fetch_one
    [ "$curr" \< "$D1" ] || break
    curr=$( date +%Y-%m-%d --date "$curr +1 day" ) ## used in instances where I need to grade data for past date ranges.
done

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

如何使用多个变量并行运行多个curl请求 的相关文章

  • 通过特定分隔符删除字符串

    我的文件中有几列 其中第二列有 分隔符 我想删除第二列中的第一个 第三个和第四个字符串 并将第二个字符串留在该列中 但我有正常的分隔符空间 所以我不知道 input 22 16050075 A G 16050075 A G 22 16050
  • 使用 grep 查找包含所有搜索字符串的行

    我有一个文件 其中包含很多与此类似的行 id 2796 some model Profile message type MODEL SAVE fields account 14 address null modification times
  • 如何使用 bash 锁定文件

    我有一个任务从远程服务器同步目录 rsync av email protected cdn cgi l email protection srv data srv data 为了使其定期运行并避免脚本 reEnter 问题 我使用 rsyn
  • 从 csv 文件中删除特定列,保持输出上的相同结构[重复]

    这个问题在这里已经有答案了 我想删除第 3 列并在输出文件中保留相同的结构 输入文件 12 10 10 10 10 1 12 23 1 45 6 7 11 2 33 45 1 2 1 2 34 5 6 I tried awk F 3 fil
  • 使用 posix shell 测试字符串中的正则表达式

    如何测试字符串是否与特定字符串匹配正则表达式与基本 无 bash 或任何其他 posix shell 脚本 在 if 语句中 您可以使用expr在 POSIX shell 中计算正则表达式的命令 s Abc expr s alpha 3 e
  • 如何制作一个 bash 脚本来同时创建 40 个程序实例?

    我是新来的bash and Linux 我编写了一个程序 我想创建多个同时实例 现在 我通过打开 10 个新终端 然后运行该程序 10 次 我运行的命令是php home calculatedata php 使用 bash 脚本执行此操作的
  • grep 两个分隔符之间的子字符串

    我有很多bash使用的脚本perl内的表达式grep为了提取两个分隔符之间的子字符串 例子 echo BeginMiddleEnd grep oP lt Begin End 问题是 当我将这些脚本移植到运行的平台时busybox 融合的 g
  • bash 行长度限制从何而来?

    在运行 Bash 4 4 19 标准安装 的 Solaris 11 上 输入行似乎有 256 个字符的限制 我想了解这个限制从何而来 我浏览了手册页 但没有找到任何解决此问题的内容 仅当未使用 readline 库时才会发生这种情况 在下面
  • 对目录中的所有文件执行命令

    有人可以提供执行以下操作的代码 假设有一个文件目录 所有这些文件都需要通过程序运行 该程序将结果输出到标准输出 我需要一个脚本 该脚本将进入一个目录 对每个文件执行命令 并将输出连接到一个大输出文件中 例如 要在 1 个文件上运行命令 cm
  • 两种情况或 if 哪个更快? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我必须制作一个 非常 轻的脚本 它将接受用户的选项并调用脚本中的函数来执行一些任务 现在我可以使用 IF 和 CASE 选项 但我想知道两
  • 如何从 Artifactory 存储库下载最新的工件?

    我需要来自存储库的最新工件 例如快照 人工工厂 http en wikipedia org wiki Software repository Repository managers 该工件需要通过脚本复制到服务器 Linux 我有什么选择
  • 动态参数值取决于另一个动态参数值

    启动前提 非常严格的环境 Windows 7 SP1 Powershell 3 0 使用外部库的可能性有限或不可能 我正在尝试重写之前创建的 bash 工具 这次使用 PowerShell 在 bash 中 我实现了自动完成功能 以使该工具
  • sed 错误“未终止的 's' 命令”故障排除

    我正在构建一个script https stackoverflow com questions 4036832 replacing a specific term in an xml file其中 它将用文件夹路径替换 XML 文件中的模式
  • 如何从 bash 数组中删除元素而不展平数组

    我想创建一个采用 bash 数组的函数 如下所示 a element zero element one element two 并删除一个元素 如 元素一 并留下一个数组 如下所示 a element zero element two 这样
  • 如何查看正在运行的 tcsh 版本?

    如何查看我的 UNIX 终端中运行的 tcsh 的当前版本 看着那 这version多变的 echo version tcsh 6 14 00 Astron 2005 03 25 i386 intel linux options wide
  • 从 UNIX 命令行向串行端口发送字节?

    我想使用命令行将字节流发送到串行端口 这可能吗 我的串口位于 dev cu usbserial A700dYoR在我的 Mac 上 例如 如果我想将整数 50 或字符串 data 发送到该串行端口 我该怎么做 我对 UNIX 的了解非常有限
  • 为什么我可以直接从 bash 执行 JAR?

    我是一个长期从事 Java 工作的人 并且知道运行带有主类的 JAR 的方法MANIFEST MFJar 中的文件很简单 java jar theJar jar 我用它来启动 Fabric3 服务器 包含在bin server jar在其标
  • 使用正则表达式模式查找 -name 并使用 cp 替换文件名

    目前我正在使用该命令cron复制 data从源到目标路径 find source path name data exec cp target path 源码结构为 source path category1 001 data source
  • 如何从我自己的脚本向 Fish shell 提供制表符补全?

    我运行的是 Ubuntu 13 10 和 Fish 2 1 0 我想自己编写一个 Python 脚本来从命令行执行一些任务 该脚本将需要命令行参数 我怎样才能编写我的脚本 以便 Fish 可以请求并获取给定参数的可能值 潜在值列表是动态的
  • shell-out 值到 md5(加密)函数

    我正在寻找一种解决方案 我正在构建 JSON 记录 并需要在 JQ 中生成一些文本 但将此文本通过管道传输到 MD5 求和函数并将其用作键的值 echo first John last Big jq id first last md5 通过

随机推荐

  • 我该如何处理代码以避免被杀?

    I got Killed运行一段代码后 代码的第一部分是 def load data distance file distance min dis max dis sys float info max 0 0 num 0 with open
  • MongoDB批量插入忽略重复

    我用谷歌搜索了一下 找不到任何关于如何在使用批量插入时忽略重复错误的可靠信息 这是我当前使用的代码 MongoClient connect mongoURL function err db if err console err err le
  • PHP 将月份数字转换为短月份名称[重复]

    这个问题在这里已经有答案了 我需要将月份编号转换为短月份名称 即 1 表示一月 2 表示二月 我知道我可以通过数组来实现这一点 但是还有其他方法吗 帮助表示赞赏 Thanks 就在这里 使用date stftime结合mktime创建所需月
  • yang 中默认值的条件赋值

    我的模型有两个属性 叶协议 叶端口 我想具体说明的是 如果协议 ssh 那么默认端口值为 22 如果协议 http 那么默认端口值为 80 etc 我该如何用 yang 来表达这个意思 没有条件的defaultYANG 值 你需要两个def
  • OpenQA.Selenium.WebDriverException:“无法在 http://localhost:60623/ 上启动驱动程序服务”

    以下代码在过去效果很好 几天后 我尝试再次运行它 但它抛出了这样的错误 using OpenQA Selenium using OpenQA Selenium Chrome using OpenQA Selenium Support UI
  • 如何移动自定义对话框?

    我是安卓初学者 我正在创建一个自定义对话框 它工作正常 但这个对话框没有动 如何移动这个自定义对话框 例如在Windows中包含记事本 画图等 当您单击此 记事本 画图等 标题栏时可以移动位置 如果可能 请发送如何移动对话框的信息 否则 如
  • window.print 不适用于 Opera 浏览器

    我正在尝试使用 javascript 代码在 Opera 浏览器中打开打印对话框 就好像我使用以下代码 Opera 浏览器可以理解并能够打开打印对话框
  • 如果元素存在等待它消失

    所以我正在尝试编写一些 cypress 代码 但我认为文档并不是很清楚 我有两种情况 页面加载时没有加载微调器 页面通过加载微调器加载 我想编写能够满足这两种情况的代码 并让测试继续进行 如果页面没有加载微调器元素 照常继续测试 如果页面确
  • 为什么每个观察委托都在新线程上运行

    在 Rx 中 当使用 Scheduler NewThread 作为 ObserveOn 方法时 当 Rx 已经保证 OnNext 永远不会重叠时 让每个观察委托 OnNext 在新线程上运行有什么好处 如果每个 OnNext 都会被一个接一
  • Flutter Table Calendar:显示从 API 到表日历的事件

    我想显示日历并包括事件 该事件已从 API 中存在 我搜索适合我的情况的插件 我发现表格日历插件 我阅读了手动显示事件的示例并发现了它 override void initState super initState final select
  • 如何读取使用 R 加密的 .xls 文件?

    通常我使用readxl用于读取 excel 文件的包 非常好 read excel path ihateexcel xls sheet 1 但是 如果我尝试读取加密的 xls 文件 会话基本上会冻结 显然不想将文件保存为 csv 因为我会丢
  • Jquery 文件树 - 如何在文件夹单击时返回文件夹名称

    我已经安装并尝试自定义 Jquery 文件树 以便单击文件夹名称时 文件夹名称和路径将返回到调用函数 目前它仅展开和折叠文件夹 并在单击文件时返回文件名 所以我也需要返回该文件夹 但看不到它是在哪里触发的 我正在使用 php 连接器 下面的
  • 如何使 JFileChooser 在断开网络驱动器时正常运行?

    当我在网络驱动器断开连接的系统上创建 JFileChooser 时 需要很长时间才能显示 JFileChooser 它会通过单个断开连接的网络驱动器阻止 EDT 大约 20 秒 这似乎是一个常见问题 但我找不到解决方法 我见过的可能的选择是
  • Azure 服务总线不断抛出 MessageLockLostException

    我不断得到MessageLockLostExceptions处理消息时 我将 Microsoft Azure ServiceBus 3 2 0 与 NET Core 2 1 一起使用 我有一个队列LockDuration设置为 30 秒 已
  • 在Python中绘制实际设置的项目,而不是项目的数量

    我写了这个小函数 def sets set1 random sample range 1 50 10 set2 random sample range 1 50 10 return set1 set2 sets 该函数的输出如下所示 24
  • 将输出数据写入文本文件在文本文件中给出不完整的结果

    我有 14 个列表 每个列表都有数字或字符串数 据 每个列表的大小为 32561 我必须输出格式如下的文件 list1 element1 list2 element1 list14 element1 list1 element2 list2
  • 如何在 R 中识别/删除非 UTF-8 字符

    当我在 R 中导入 Stata 数据集时 使用foreign包 导入有时包含无效字符UTF 8 这本身就已经够令人不快的了 但是当我尝试将对象转换为JSON 使用rjson包裹 如何识别字符串中无效的 UTF 8 字符并在之后将其删除 另一
  • 如何在 Mac OS X 上安装并运行 XulRunner 应用程序?

    我使用的是 Mac OS X Lion 并且我完全按照本教程进行操作 https developer mozilla org en getting started with xulrunner 当我尝试运行时 Library Framewo
  • 运行线程几秒钟

    我正在使用媒体播放器实例来播放音乐文件 我想播放歌曲一段时间然后停止播放 我正在使用带有计数器递减的线程 但有些无法正常工作 你必须为此使用处理程序 尝试这个 in your onCreate use this start media pl
  • 如何使用多个变量并行运行多个curl请求

    Set Up 我目前有以下脚本可以用来下载文件curl 使用具有多个变量的 ref 文件 当我创建脚本时 它适合我的需求 但是随着参考文件变得更大并且我通过以下方式请求的数据curl生成需要更长的时间 我的脚本现在需要太多时间才能完成 客观