title: Google App Engine custom IP port in Go
body: <p>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:</p>
  
  <pre><code>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 -
  </code></pre>