TimedOut异常在发送请求期间上升

时间:2017-01-30 09:20:01

标签: python symfony

我是编程方面的新手。对不起,如果我的问题是愚蠢的!但也许有人可以解释我这个过程。抱歉我的英语!

我尝试使用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限制和异常再次上升。小的请求池发送良好。

我赞美任何帮助!可能有人可以告诉我在哪里可以阅读有关按主题发送请求的信息吗?

0 个答案:

没有答案