在 Google Appengine 上以 cron 作业的形式执行 Go 程序(网络爬虫)

如何在 Google Appengine 中将名为“gcinfo”(带有 firebase 输出的网络爬虫)的单个 Go 程序作为 cron 运行?

我能够创建一个项目 ID 并使用 App SDK 上传 Go 程序。cron 作业按照 cron.yaml 中的定义每 15 分钟执行一次。没有错误。但是我在日志中没有发现输出,也没有写入 firebase。在 app.yaml、gcinfo.yaml 和 cron.yaml 中进行了大量更改后,没有结果或出现类似错误(错误代码 204)。我现在对 yaml 文件中的设置完全感到困惑。

有人可以给我或指出这些设置的简单示例吗?我想每 15 分钟在应用程序引擎中以 cron 的形式运行一个 Go 程序。

我的项目结构是:

  • 带有 app.yaml 和 cron.yaml 的 myproject 文件夹

  • myproject 子文件夹“hello”与 hello.yaml 和简单的 hello.go 示例与“hello world!”

  • 带有 gcinfo.yaml 和 gcinfo.go 的 myproject 子文件夹“gcinfo”(使用 firebase-output 使用 webcrawler)”

应用程序.yaml

application: myproject

version: 1

runtime: go

api_version: go1


handlers:

- url: /.*

  script: _go_app

cron.yaml


cron:

- description: Ausfuehrung des tasks gcinfo

url: /gcinfo

schedule: every 15 minutes from 05:30 to 23:00

timezone: Europe/Berlin

target: gcinfo

gcinfo.yaml


application: myproject

module: gcinfo

#version: 1

runtime: go

api_version: go1


handlers:

- url: /gcinfo\.*

script: gcinfo\gcinfo.go

我的 gcinfo.go 具有以下结构


package gcinfo


import (

...

)


....


func gcinfo() {

....

}

“goapp deploy”中这个配置没有错误,appengine每15分钟反应6ms,但是go programm gcinfo没有输出。我已经尝试将 gcinfo 设为 main 并得到相同的结果。


不负相思意
浏览 195回答 1
1回答

开满天机

我找到了一个解决方案,现在 cron 作业运行并在作业控制中写入注释。myproject 文件夹中的 cron.yamlcron:- description: Ausfuehrung des tasks gcinfourl: /gcinfoschedule: every 15 minutes from 05:30 to 23:00timezone: Europe/Berlin子文件夹 gcinfo 中的 app.yamlapplication: myprojectmodule: gcinfoversion: 1runtime: goapi_version: go1handlers:- url: /gcinfo  script: _go_app 以及 gcinfo.go(gcinfo 子文件夹)中的主要变化package gcinfoimport ("net/http"..."appengine""appengine/urlfetch")func init() { http.HandleFunc("/gcinfo", gcinfo)}...func gcinfo(w http.ResponseWriter, r *http.Request) {c := appengine.NewContext(r)...}仅编写 firebase 引擎不适用于 appengine。我将不得不做更多的研究。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go