0

我想创建一个用 python 编写的最小套接字服务器,我可以用我的 OpenShift 帐户运行它。我搜索了一天多,找到了很多可以用于此的库(tornado、django、twisted、flask、autobahn、gevent),但我无法为我实现它。(实际上我真的不知道这些之间的区别。)我也找了很多教程,我找到了一个使用 Tornado 的实现:

import tornado.ioloop
import tornado.web
import tornado.websocket
import tornado.template

class MainHandler(tornado.web.RequestHandler):
  def get(self):
    loader = tornado.template.Loader(".")
    self.write('hello world')

class WSHandler(tornado.websocket.WebSocketHandler):
  def open(self):
    print 'connection opened...'
    self.write_message("The server says: 'Hello'. Connection was accepted.")

  def on_message(self, message):
    self.write_message("The server says: " + message + " back at you")
    print 'received:', message

  def on_close(self):
    print 'connection closed...'

application = tornado.web.Application([
  (r'/ws', WSHandler),
  (r'/', MainHandler),
  (r"/(.*)", tornado.web.StaticFileHandler, {"path": "./resources"}),
])

if __name__ == "__main__":
  application.listen(8000)
  tornado.ioloop.IOLoop.instance().start()

但是我无法从一个简单的 html5 websocket 客户端连接到它,而且503 Service Temporarily Unavailable当我进入我的域时我会得到它。

你能否给我一个最小的实现(如果可能的话使用龙卷风,或者也许使用 django),如果将它上传到 OpenShift 或链接我一个值得信赖且 100% 可靠的教程?我真的很高兴我无法理解这一点。

4

2 回答 2

2

你不能像这样在 openshift 上使用端口地址,我建议你这样做:

   ip   = os.environ['OPENSHIFT_PYTHON_IP']
   port = int(os.environ['OPENSHIFT_PYTHON_PORT'])
   application.listen(port , ip)
   tornado.ioloop.IOLoop.instance().start()

例如检查这个 repo:https ://github.com/avinassh/openshift-tornado-starter

于 2014-06-27T06:54:17.983 回答
0

看起来 OpenShift 不允许您只运行这样的应用程序。您可以在此处查看操作指南:https ://github.com/giulivo/openshift-hellotornado

于 2013-08-19T19:08:22.940 回答