douyan4470 2011-10-07 20:06
浏览 87
已采纳

Go中的Google App Engine自定义IP端口

I want to create a web app on GAE in Go and I need it to listen to a custom port. How do I set it up? I tried to use http.ListenAndServe(":12345", nil) in the sandbox, but got this in my console:

WARNING  2011-10-07 20:01:01,252 urlfetch_stub.py:108] No ssl package found. urlfetch 

will not be able to validate SSL certificates.
INFO     2011-10-07 20:01:01,847 appengine_rpc.py:159] Server: appengine.google.com
INFO     2011-10-07 20:01:01,855 appcfg.py:463] Checking for updates to the SDK.
INFO     2011-10-07 20:01:04,625 appcfg.py:480] The SDK is up to date.
WARNING  2011-10-07 20:01:04,625 datastore_file_stub.py:512] Could not read datastore data from /var/folders/e0/e0U5NtMXFHOB6jVwkVhsnE+++TM/-Tmp-/dev_appserver.datastore
INFO     2011-10-07 20:01:04,627 rdbms_sqlite.py:58] Connecting to SQLite database '' with file '/var/folders/e0/e0U5NtMXFHOB6jVwkVhsnE+++TM/-Tmp-/dev_appserver.rdbms'
WARNING  2011-10-07 20:01:04,633 dev_appserver.py:4748] Could not initialize images API; you are likely missing the Python "PIL" module. ImportError: No module named _imaging
INFO     2011-10-07 20:01:04,641 dev_appserver_multiprocess.py:637] Running application tpbitblock on port 8080: http://localhost:8080
INFO     2011-10-07 20:01:08,448 __init__.py:365] building _go_app
INFO     2011-10-07 20:01:11,105 __init__.py:351] running _go_app
throw: init rescheduling

runtime.throw+0x40 /private/tmp/appengine/google_appengine/goroot/src/pkg/runtime/runtime.c:102
    runtime.throw(0x278c7f, 0xdc73)
schedule+0x3e /private/tmp/appengine/google_appengine/goroot/src/pkg/runtime/proc.c:535
    schedule(0x10803000, 0x10803000)
runtime.mcall+0x3a /private/tmp/appengine/google_appengine/goroot/src/pkg/runtime/386/asm.s:174
    runtime.mcall(0x10803000, 0x0)

goroutine 2 [1]:
net.*pollServer·Run /private/tmp/appengine/google_appengine/goroot/src/pkg/net/fd.go:213
    net.*pollServer·Run(0x10801c90, 0x0)
runtime.goexit /private/tmp/appengine/google_appengine/goroot/src/pkg/runtime/proc.c:178
    runtime.goexit()
----- goroutine created by -----
net.newPollServer+0x2dd /private/tmp/appengine/google_appengine/goroot/src/pkg/net/newpollserver.go:39

goroutine 1 [4]:
runtime.gosched+0x4d /private/tmp/appengine/google_appengine/goroot/src/pkg/runtime/proc.c:603
    runtime.gosched()
runtime.chanrecv+0x14d /private/tmp/appengine/google_appengine/goroot/src/pkg/runtime/chan.c:361
    runtime.chanrecv(0x1081d900, 0x30800e6c, 0x0, 0x0, 0x0, ...)
runtime.chanrecv1+0x3f /private/tmp/appengine/google_appengine/goroot/src/pkg/runtime/chan.c:424
    runtime.chanrecv1(0x1081d900, 0x1081e580)
net.*pollServer·WaitRead+0x47 /private/tmp/appengine/google_appengine/goroot/src/pkg/net/fd.go:255
    net.*pollServer·WaitRead(0x10801c90, 0x1081e580, 0x0)
net.*netFD·accept+0x2ae /private/tmp/appengine/google_appengine/goroot/src/pkg/net/fd.go:605
    net.*netFD·accept(0x1081e580, 0x45716, 0x0, 0x0, 0x0, ...)
net.*TCPListener·AcceptTCP+0x53 /private/tmp/appengine/google_appengine/goroot/src/pkg/net/tcpsock.go:272
    net.*TCPListener·AcceptTCP(0x108008b8, 0x30800f00, 0x0, 0x0)
net.*TCPListener·Accept+0x36 /private/tmp/appengine/google_appengine/goroot/src/pkg/net/tcpsock.go:282
    net.*TCPListener·Accept(0x108008b8, 0x0, 0x0, 0x0, 0x0, ...)
http.*Server·Serve+0x96 /private/tmp/appengine/google_appengine/goroot/src/pkg/http/server.go:868
    http.*Server·Serve(0x10839d20, 0x10839e20, 0x108008b8, 0x0, 0x0, ...)
http.*Server·ListenAndServe+0x9c /private/tmp/appengine/google_appengine/goroot/src/pkg/http/server.go:855
    http.*Server·ListenAndServe(0x10839d20, 0x10839d20, 0x406)
http.ListenAndServe+0x52 /private/tmp/appengine/google_appengine/goroot/src/pkg/http/server.go:920
    http.ListenAndServe(0x155640, 0x6, 0x0, 0x0, 0x0, ...)
BitBlock.init·1+0x174 BitBlock/BitBlock.go:43
    BitBlock.init·1()
BitBlock.init+0x70 BitBlock/BitBlock.go:0
    BitBlock.init()
main.init+0x39 _go_main.go:0
    main.init()
runtime.mainstart+0x5 /private/tmp/appengine/google_appengine/goroot/src/pkg/runtime/386/asm.s:91
    runtime.mainstart()
runtime.goexit /private/tmp/appengine/google_appengine/goroot/src/pkg/runtime/proc.c:178
    runtime.goexit()
----- goroutine created by -----
_rt0_386+0xbf /private/tmp/appengine/google_appengine/goroot/src/pkg/runtime/386/asm.s:80
ERROR    2011-10-07 20:01:12,196 dev_appserver.py:4200] Exception encountered handling request
Traceback (most recent call last):
  File "/Google App Engine/google/appengine/tools/dev_appserver.py", line 4143, in _HandleRequest
    self._Dispatch(dispatcher, self.rfile, outfile, env_dict)
  File "/Google App Engine/google/appengine/tools/dev_appserver.py", line 4049, in _Dispatch
    base_env_dict=env_dict)
  File "/Google App Engine/google/appengine/tools/dev_appserver.py", line 616, in Dispatch
    base_env_dict=base_env_dict)
  File "/Google App Engine/google/appengine/tools/dev_appserver.py", line 3120, in Dispatch
    self._module_dict)
  File "/Google App Engine/google/appengine/tools/dev_appserver.py", line 2972, in ExecuteCGI
    env, infile, outfile)
  File "/Google App Engine/google/appengine/ext/go/__init__.py", line 399, in execute_go_cgi
    GO_APP.make_and_run()
  File "/Google App Engine/google/appengine/ext/go/__init__.py", line 362, in make_and_run
    wait_until_go_app_ready(self.proc.pid)
  File "/Google App Engine/google/appengine/ext/go/__init__.py", line 285, in wait_until_go_app_ready
    raise Exception('unable to start ' + GO_APP_NAME)
Exception: unable to start _go_app
INFO     2011-10-07 20:01:12,242 dev_appserver.py:4247] "GET / HTTP/1.1" 500 -
INFO     2011-10-07 20:01:12,505 __init__.py:351] running _go_app
throw: init rescheduling

runtime.throw+0x40 /private/tmp/appengine/google_appengine/goroot/src/pkg/runtime/runtime.c:102
    runtime.throw(0x278c7f, 0xdc73)
schedule+0x3e /private/tmp/appengine/google_appengine/goroot/src/pkg/runtime/proc.c:535
    schedule(0x10803000, 0x10803000)
runtime.mcall+0x3a /private/tmp/appengine/google_appengine/goroot/src/pkg/runtime/386/asm.s:174
    runtime.mcall(0x10803000, 0x0)

goroutine 2 [1]:
net.*pollServer·Run /private/tmp/appengine/google_appengine/goroot/src/pkg/net/fd.go:213
    net.*pollServer·Run(0x10801c90, 0x0)
runtime.goexit /private/tmp/appengine/google_appengine/goroot/src/pkg/runtime/proc.c:178
    runtime.goexit()
----- goroutine created by -----
net.newPollServer+0x2dd /private/tmp/appengine/google_appengine/goroot/src/pkg/net/newpollserver.go:39

goroutine 1 [4]:
runtime.gosched+0x4d /private/tmp/appengine/google_appengine/goroot/src/pkg/runtime/proc.c:603
    runtime.gosched()
runtime.chanrecv+0x14d /private/tmp/appengine/google_appengine/goroot/src/pkg/runtime/chan.c:361
    runtime.chanrecv(0x1081d900, 0x30800e6c, 0x0, 0x0, 0x0, ...)
runtime.chanrecv1+0x3f /private/tmp/appengine/google_appengine/goroot/src/pkg/runtime/chan.c:424
    runtime.chanrecv1(0x1081d900, 0x1081e580)
net.*pollServer·WaitRead+0x47 /private/tmp/appengine/google_appengine/goroot/src/pkg/net/fd.go:255
    net.*pollServer·WaitRead(0x10801c90, 0x1081e580, 0x0)
net.*netFD·accept+0x2ae /private/tmp/appengine/google_appengine/goroot/src/pkg/net/fd.go:605
    net.*netFD·accept(0x1081e580, 0x45716, 0x0, 0x0, 0x0, ...)
net.*TCPListener·AcceptTCP+0x53 /private/tmp/appengine/google_appengine/goroot/src/pkg/net/tcpsock.go:272
    net.*TCPListener·AcceptTCP(0x108008b8, 0x30800f00, 0x0, 0x0)
net.*TCPListener·Accept+0x36 /private/tmp/appengine/google_appengine/goroot/src/pkg/net/tcpsock.go:282
    net.*TCPListener·Accept(0x108008b8, 0x0, 0x0, 0x0, 0x0, ...)
http.*Server·Serve+0x96 /private/tmp/appengine/google_appengine/goroot/src/pkg/http/server.go:868
    http.*Server·Serve(0x10839d20, 0x10839e20, 0x108008b8, 0x0, 0x0, ...)
http.*Server·ListenAndServe+0x9c /private/tmp/appengine/google_appengine/goroot/src/pkg/http/server.go:855
    http.*Server·ListenAndServe(0x10839d20, 0x10839d20, 0x406)
http.ListenAndServe+0x52 /private/tmp/appengine/google_appengine/goroot/src/pkg/http/server.go:920
    http.ListenAndServe(0x155640, 0x6, 0x0, 0x0, 0x0, ...)
BitBlock.init·1+0x174 BitBlock/BitBlock.go:43
    BitBlock.init·1()
BitBlock.init+0x70 BitBlock/BitBlock.go:0
    BitBlock.init()
main.init+0x39 _go_main.go:0
    main.init()
runtime.mainstart+0x5 /private/tmp/appengine/google_appengine/goroot/src/pkg/runtime/386/asm.s:91
    runtime.mainstart()
runtime.goexit /private/tmp/appengine/google_appengine/goroot/src/pkg/runtime/proc.c:178
    runtime.goexit()
----- goroutine created by -----
_rt0_386+0xbf /private/tmp/appengine/google_appengine/goroot/src/pkg/runtime/386/asm.s:80
ERROR    2011-10-07 20:01:13,530 dev_appserver.py:4200] Exception encountered handling request
Traceback (most recent call last):
  File "/Google App Engine/google/appengine/tools/dev_appserver.py", line 4143, in _HandleRequest
    self._Dispatch(dispatcher, self.rfile, outfile, env_dict)
  File "/Google App Engine/google/appengine/tools/dev_appserver.py", line 4049, in _Dispatch
    base_env_dict=env_dict)
  File "/Google App Engine/google/appengine/tools/dev_appserver.py", line 616, in Dispatch
    base_env_dict=base_env_dict)
  File "/Google App Engine/google/appengine/tools/dev_appserver.py", line 3120, in Dispatch
    self._module_dict)
  File "/Google App Engine/google/appengine/tools/dev_appserver.py", line 2972, in ExecuteCGI
    env, infile, outfile)
  File "/Google App Engine/google/appengine/ext/go/__init__.py", line 399, in execute_go_cgi
    GO_APP.make_and_run()
  File "/Google App Engine/google/appengine/ext/go/__init__.py", line 362, in make_and_run
    wait_until_go_app_ready(self.proc.pid)
  File "/Google App Engine/google/appengine/ext/go/__init__.py", line 285, in wait_until_go_app_ready
    raise Exception('unable to start ' + GO_APP_NAME)
Exception: unable to start _go_app
INFO     2011-10-07 20:01:13,531 dev_appserver.py:4247] "GET /favicon.ico HTTP/1.1" 500 -
  • 写回答

2条回答 默认 最新

  • dsjuimtq920056 2011-10-07 20:40
    关注

    You can't do that. App Engine doesn't allow custom http ports. App Engine environment is heavily sandboxed and not everything that you can do in pure Go (or Java or Python) is available in their respective App Engine environments.

    From http://code.google.com/appengine/docs/go/overview.html:

    As with the Java and Python environments, not all the standard library's functionality is available inside the sandbox. For example, attempts to open a socket or write to a file will return an os.EINVAL error.

    Go apps run inside a secure "sandbox" environment with a reduced set of libraries. For instance, an app cannot write data to the local file system or make arbitrary network connections. Instead, apps use scalable services provided by App Engine to store data and communicate over the Internet.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题