自定义搜索API适用于本地主机,但在Heroku上请求超时

时间:2016-02-13 02:08:38

标签: node.js heroku timeout google-custom-search

我目前正在使用以下代码构建图像搜索API:

当我尝试使用终端中的heroku local在本地运行时,它按预期工作,即当我在浏览器中输入以下URL时: http://localhost:5000/api/imagesearch/1984

返回所需的搜索结果。但是,当应用程序部署在Heroku上并且我使用heroku打开运行应用程序时,我收到应用程序错误。我检查了日志,看起来好像是H12请求超时错误。

在我看来,当我使用Heroku进行访问时,应用程序需要花费很长时间(比我在localhost上运行时要长得多,因此有一个请求超时错误)来获取谷歌自定义搜索的响应当我通过本地主机访问,但我无法弄清楚为什么会是这种情况或我还能做些什么来解决这个问题。

非常感谢一些指导。感谢

var Search = require('../models/history.js');

var GoogleSearch = require('google-search');
var googleSearch = new GoogleSearch({
    key: "XXXX",
    cx: "YYY"
}); 

function ImgSearchHandler () {

this.retrieveSearchResults = function (req, res) {
    var newSearch = new Search();
    newSearch.term = req.params.query;
    newSearch.when = new Date();

    newSearch.save(function (err){
        console.log("saving...");
        if (err) {throw err;}
        var offset;
        if (req.query.offset) {
            offset = req.query.offset;
        } else {
            offset = 1;
        }

        //res.send('save and retrieve');

        googleSearch.build({
          q: req.params.query,
          searchType: "image",
          fileType:'png jpg gif jpeg',
          num: 1, // Number of search results to return between 1 and 10, inclusive 
          start: offset,
        }, function(error, response) {      
            if (error)  {
                throw error;
            }

            var results = [];
            response.items.forEach(function (element){
                var url = element.link;
                var context = element.image.contextLink;
                var snippet = element.snippet;
                var thumbnail = element.image.thumbnailLink;

                var result = {url: url, snippet: snippet, thumbnail: thumbnail, context: context};
                results.push(result);

            });

            res.json(results);
          //res.json(response.items);
        });

    });

}

}

module.exports = ImgSearchHandler;

0 个答案:

没有答案