![]() |
1
5
这对我来说可能是个合适的任务 Typhoeus
想想看,由于文件太多,你可能会遇到内存问题。防止这种情况的一种方法是从不将数据存储在变量中,而是直接将其流式传输到文件中。你可以用 em-http-request 为了这个。
|
![]() |
2
3
所以,如果你不设置一个on-body处理程序,那么curb会缓冲下载。如果你正在下载文件,你应该使用一个身体上的处理程序。如果要使用Ruby Curl下载多个文件,请尝试Curl::Multi.download接口。
如果你只想下载一个文件。
|
![]() |
3
1
和你一样,我也有过你的经历。我在20多个并发线程中运行curl的系统命令,比在20多个并发线程中运行curb快10倍。不管我怎么努力,都是这样。 从那以后,我转向了HTTPClient,两者的区别是巨大的。现在它的运行速度可以达到20个并发curl系统命令,并且使用更少的CPU。 |
![]() |
4
0
首先让我说我对Ruby几乎一无所知。
你试过分析你的代码来看看大部分时间都花在哪里了吗? |
![]() |
6
0
您没有指定Ruby版本,但是1.8.x中的线程是用户空间线程,不受操作系统调度,因此整个Ruby解释器只使用一个CPU/内核。除此之外,还有一个全局解释器锁,可能还有其他锁,它们会干扰并发性。由于您试图最大限度地提高网络吞吐量,因此可能没有充分利用CPU。 产生尽可能多的进程,因为机器有内存,并限制对线程的依赖。 |
![]() |
Kuba Kaktus · 用python发送curl请求 2 年前 |
![]() |
ADGB · 将谷歌硬盘文件下载到Ubuntu终端 6 年前 |
|
user9632001 · Cron和Curl删除或关闭会话用户 6 年前 |