我是编程方面的新手。对不起,如果我的问题是愚蠢的!但也许有人可以解释我这个过程。抱歉我的英语!
我尝试使用python grequests组件向某个服务器发送一个请求池,并且有一个timedOut异常。如果我发送一个非常小的请求池(大约500),它工作正常,非常快,但如果我增加这个池我得到例外。这是一个非常简单的代码:
import grequests
import time
import sqlalchemy
from sqlalchemy.orm import sessionmaker
start_time = time.time()
urls // list of urls
rs = (grequests.get(u) for u in urls)
# Send them.
grequests.map(rs)
print(time.time() - start_time)
此外,我尝试使用symfony框架及其进程组件。 当我使用run()方法运行它时,一切都很好,但是发送所有请求需要花费很多时间。如果我使用start()方法并异步发送请求,则会出现相同的异常。我的代码:
public function someFunction($id, $interval, $url)
{
$startTime = time();
$end = date("Y-m-d H:i:s", time());
$start = date("Y-m-d H:i:s", strtotime($end) - $interval);
echo 'interval: ' . $start . ' - ' . $end . PHP_EOL;
$data = $this->em->getRepository('AppBundle:UserAccount', 'slave')-> ...;
if (empty($data)) {
$response = false;
} else {
echo count($data);
$i = 0;
foreach ($data as $item) {
$fullUrl = sprintf($url, $item['a'], $item['b']);
$process = new Process("wget -o --spider --timeout=3 --tries=1 $fullUrl > /dev/null 2> /dev/null || true");
$process->setTimeout(30);
$process->start();
$i++;
if ($i == 10) {
$process->wait();
$i = 0;
}
echo $process->getPid() . PHP_EOL;
}
$response = true;
}
$endTime = time();
echo "Time spent" . ($endTime - $startTime)/60 . " minutes. And delivered ". count($data) . PHP_EOL;
return $response;
}
此外,如果我增加时间,但它没有帮助。脚本工作直到timeOut限制和异常再次上升。小的请求池发送良好。
我赞美任何帮助!可能有人可以告诉我在哪里可以阅读有关按主题发送请求的信息吗?