Google app engine 谷歌应用引擎Golang返回404页未找到
Google app engine 谷歌应用引擎Golang返回404页未找到,google-app-engine,nginx,go,Google App Engine,Nginx,Go,app.yaml runtime: go api_version: go1 handlers: - url: /.* script: _go_app 我的main.go文件: 包干管 import ( "fmt" "github.com/cbll/stockmarket-service/lib" "net/http" "log" "google.golang.org/appengine" ) func main() { appengine
app.yaml
runtime: go
api_version: go1
handlers:
- url: /.*
script: _go_app
我的main.go
文件:
包干管
import (
"fmt"
"github.com/cbll/stockmarket-service/lib"
"net/http"
"log"
"google.golang.org/appengine"
)
func main() {
appengine.Main()
fmt.Println("Starting the application...")
// Run application until halted
for {
go lib.GetStockData()
StockController()
}
}
// Expose controller at http://localhost:8080/
func StockController() {
var port = ":8080"
fmt.Println("Starting web server listening on port", port)
http.HandleFunc("/", lib.StocksHandler)
log.Fatal(http.ListenAndServe(port, nil))
}
如果我注释掉appengine.Main()
,我可以在本地运行它,而不会出现任何问题。它从端口8080开始
gcloud app deploy
工作正常,将正确地将应用部署到谷歌云
但是,gcloud app browse
将我带到该站点,返回404未找到页面
。事实上,使用gcloud应用程序日志检查日志时会读到:
2018-01-06 00:04:18 default[20180106t010155] + exec app
2018-01-06 00:08:32 default[20180106t010155] "GET /" 404
我有点不确定在哪里进行故障排除。它在本地工作,并指定:8080作为它应该的端口(据我所知?),并导入appengine main方法。我会错过什么
编辑:
将处理程序更改为
-url:///code>
结果:
2018-01-06 00:17:30 default[20180106t010915] "GET / HTTP/1.1" 404
。。标准环境提供主程序并运行http服务器。将初始化代码放入init()函数中。不要使用主程序包
package app
import (
"github.com/cbll/stockmarket-service/lib"
"net/http"
)
func init() {
go lib.GetStockData()
http.HandleFunc("/", lib.StocksHandler)
}
标准环境提供主程序并运行http服务器。将初始化代码放入init()函数中。不要使用主程序包
package app
import (
"github.com/cbll/stockmarket-service/lib"
"net/http"
)
func init() {
go lib.GetStockData()
http.HandleFunc("/", lib.StocksHandler)
}
你的脚本:
在你的应用程序中。yaml
应该指向main.go
,但谷歌的文档说明:对于go应用程序,脚本的值应该始终为_go\u app。
?我的错,刚刚又查过了。你说它在没有appengine.Main()
的情况下在本地运行很好,上传时会发生同样的情况吗?不,如果没有appengine.Main()
的情况下上传,你会得到错误:解析器:找到了带有函数Main的顶级包Main,但Main没有调用appengine.Main()代码>您的应用程序引擎是否使用灵活的环境?在appengine github上,它声明它与该环境不兼容:你的应用程序中的脚本:
。yaml
应该指向main.go
,但谷歌的文档声明:对于go应用程序,脚本的值应该始终为_go\u app.
?我的错,刚刚又查过了。你说它在没有appengine.Main()
的情况下在本地运行很好,上传时会发生同样的情况吗?不,如果没有appengine.Main()
的情况下上传,你会得到错误:解析器:找到了带有函数Main的顶级包Main,但Main没有调用appengine.Main()代码>您的应用程序引擎是否使用灵活的环境?在appengine github上,它声明它与该环境不兼容:它现在返回JSON!不过,它是空的lib.GetStockData()
未运行吗?它没有记录它应该记录的内容。虽然http服务器现在响应200,但它从不运行我的fmt.Println
命令。。奇怪?这个答案也适用于我在GCP中的AppEngine上部署我的应用程序。在玩了4天这些脚本之后,这终于是有效的解决方案(也是web上唯一一个与AppEngine相关的解决方案)。多谢各位+1它现在返回JSON!不过,它是空的lib.GetStockData()
未运行吗?它没有记录它应该记录的内容。虽然http服务器现在响应200,但它从不运行我的fmt.Println
命令。。奇怪?这个答案也适用于我在GCP中的AppEngine上部署我的应用程序。在玩了4天这些脚本之后,这终于是有效的解决方案(也是web上唯一一个与AppEngine相关的解决方案)。多谢各位+1.