Articles of google app engine

Google云端平台:运行几个小时的抓取脚本

我有一个NodeJS脚本,每天都会删除url。 这些请求被限制为对服务器友善。 这导致我的脚本运行了相当长的时间(几个小时)。 我一直在寻找一种在GCP上部署的方法。 而且因为之前在cron中完成了,所以我自然会看到如何在Google Cloud上运行cronjob。 但是,根据文档 ,该脚本必须作为API公开,并且对该API的http调用最多只能运行60分钟,这不符合我的需要。 我看了这个问题 ,build议使用云端function。 不过,我不确定这种方法适合我的情况,因为我的脚本需要比在那里描述的简单的服务器监视作业更多的处理。 有没有人在GCP上做这件事? 注意:为了澄清,我想避免将其部署在VPS上。 编辑:我伸手到谷歌,这是他们的回复: 感谢您的耐心等待。 目前,由于当前App Engine的cron限制为每个HTTP请求60分钟 ,因此无法连续运行6到7个小时的cron脚本。 如果您的使用案例可能,则可以将7个小时分配给重复执行的任务,例如每10分钟或1小时。 cron作业请求受到与推送任务队列相同的限制。 免费应用程序最多可以有20个计划任务。 您可以参考cron计划格式的文档 。 另外,可以继续使用Postgres和Redis。 不过,请注意Postgres仍处于testing阶段。 由于我不能传播任务,我不得不继续为此pipe理一个dokku VPS。

导入关键字不被gulp throwing识别SyntaxError:意外的保留字

Failed to load external module babel-core/register Failed to load external module babel/register somelocation\gulpfile.babel.js:27 import fs from 'fs'; ^^^^^^ SyntaxError: Unexpected reserved word at exports.runInThisContext (vm.js:53:16) at Module._compile (module.js:413:25) at Object.Module._extensions..js (module.js:452:10) at Module.load (module.js:355:32) at Function.Module._load (module.js:310:12) at Module.require (module.js:365:17) at require (module.js:384:17) at Liftoff.handleArguments (\AppData\Roaming\npm\node_modules\gulp\bin\gulp.js:116:3) at Liftoff.<anonymous> (\AppData\Roaming\npm\node_modules\gulp\node_modules\liftoff\index.js:192:16) at module.exports (\AppData\Roaming\npm\node_modules\gulp\node_modules\liftoff\node_modules\flagged-respawn\index.js:17:3) 在尝试在npm之后运行gulp时遇到此错误,如下所述: deploy-appengine.md 。 […]

如何从App Engine获得真正的请求客户端的IP

我已经设置了app.set('trust_proxy', 1); 就像本页build议,但每个请求它给出以下IP地址169.254.160.2 … req.ip => 169.254.160.2 req.ips => [ '169.254.160.2' ] 标题build议标题也具有相同的值…所以我如何得到IP因为所有“什么是我的IP”网站告诉我,我的IP是130.204.67.112 那么如何让我的真正的IP在App引擎? PS。 我使用自定义的docker容器为我的应用程序,如果重要的话(我认为它不可能,但仍然)我已经从heroku移植它需要app.enable('trust_proxy') ,它确实工作。

Cron工作在谷歌云

我需要为我在google云上托pipe的nodejs应用程序部署几个cron作业。 我有2个选项 cron-schedule npm包。 由应用程序引擎提供的cron.yaml。 我不确定哪个有更好的performance,为什么? 除此之外,我希望我的cron作业能够在可抢占的实例上工作,因为它们是为了它,我search了很多,但没有find任何相关的东西。

AppEngine App头中没有X-AppEngine-Region?

我正在试图让请求中的国家/地区。 我认为有可能在X-AppEngine-Country每个请求中获得X-AppEngine-Region和X-AppEngine-Country头文件,但是它们缺失。 有时标题是临时的,有时他们是这样的(只列出键): alt-svc content-length content-type date etag server status via x-powered-by 这是我的代码。 我还需要做些什么来获得地区和国家呢? app.get('/', (req, res) => { res.status(200).send(req.headers['X-AppEngine-Region'] || ''); }); app.post('/ping', (req, res) => { res.status(200).send(req.headers['X-AppEngine-Region'] || ''); });

如何将所有请求redirect到特定的域名?

我在App Engine上为我的网站设置了SSL和自定义域名。 它工作得很好:我可以去https://www.mywebsite.com和页面加载。 但是我想做一下改变。 如果我去mywebsite.com,我会立即redirect到https://www.mywebsite.com 。 我怎样才能做到这一点 ?

如何在App-Engine上运行的基于快速的Node JS应用程序中获取远程客户端的IP地址

尝试获取IP时,所有标准标题值都包含不正确的值。 req.ip: ::ffff:172.17.0.5 req.headers['x-forwarded-for']: 169.254.160.2 req.socket.remoteAddress: ::ffff:172.17.0.5 所有这些导致错误的IP。

cron支持node.js App Engine

我正在尝试使用cron作业将一个node.js应用程序部署到App Engine。 我将cron.yaml文件添加到应用程序(按照此处的说明: https : //cloud.google.com/appengine/docs/flexible/nodejs/scheduling-jobs-with-cron-yaml )并进行了部署,但是该作业从不得到执行。 cron.yaml: cron: – description: test cron job url: /api/crontest schedule: every 1 mins terminal存在于我的应用程序,我可以直接从浏览器,但它从来没有从cron执行。 我在日志中看到的唯一一件偶尔的cron: unrecognized service ,但它不符合一分钟的频率。 我错过了什么? cron是否支持平台?

如何使用Google数据存储创build模式(在JavaScript中)?

我正在编写使用Google数据存储的Nodejs应用程序。 我只是想知道如何设置架构与谷歌数据存储authentication过程。 基本上,我怎样才能做下面的代码与Google数据存储: var mongoose = require('mongoose'); var bcrypt = require('bcrypt-nodejs'); var userSchema = mongoose.Schema({ local : { email : String, password : String, } }); // generating a hash userSchema.methods.generateHash = function(password) { return bcrypt.hashSync(password, bcrypt.genSaltSync(8), null); }; // checking if password is valid userSchema.methods.validPassword = function(password) { return bcrypt.compareSync(password, this.local.password); }; // create […]

通过快递中间件,从谷歌云存储中提供静态文件

我有一个快速的应用程序托pipe在谷歌AppEngine使用快速静态中间件。 我想将静态文件存储在google-cloud-storage ,并且能够从常规文件系统切换到google-cloud-storage而无需太多修改。 我正在考虑写一个中间件: 使用Google Cloud客户端库来pipe理Node.js ,例如来自Google Cloud Storage的Expresscaching图片stream ; 或充当代理(将path名映射到原始的google-cloud-storage URL)。 有没有更简单/更清洁的方法来做到这一点?