Webfaction中的Tornado网页服务器
我刚开始学习网页开发,想用Instagram的API和Django来开发一个网页应用。我发现很多人都在用Tornado Web Server来处理实时订阅。所以我在Webfaction上托管我的项目,找到了这段代码,可以把我的Django项目放到Tornado提供的“WSGI容器”里:
import os
import tornado.httpserver
import tornado.ioloop
import tornado.wsgi
import tornado.web
import sys
import django.core.handlers.wsgi
sys.path.append('/path/to/project')
class HelloHandler(tornado.web.RequestHandler):
def get(self):
self.write('Hello from tornado')
def main():
os.environ['DJANGO_SETTINGS_MODULE'] = 'myproject.settings' # path to your settings module
wsgi_app = tornado.wsgi.WSGIContainer(django.core.handlers.wsgi.WSGIHandler())
tornado_app = tornado.web.Application(
[
('/hello-tornado', HelloHandler),
('.*', tornado.web.FallbackHandler, dict(fallback=wsgi_app)),
]
)
http_server = tornado.httpserver.HTTPServer(tornado_app)
http_server.listen(8080)
tornado.ioloop.IOLoop.instance().start()
if __name__ == "__main__":
main()
我在Webfaction服务器上运行了这个Python脚本,但每次我试着访问“http://mywebsite.com/hello-tornado/”时,总是无法正常工作。我知道我在那个端口上运行了Tornado服务器,但不太清楚怎么从浏览器访问它,或者该怎么做。我哪里出错了呢?谢谢你的帮助和耐心。每个回答我都会给个网络击掌。
补充一下:我真正想做的是通过Tornado接收我用Instagram实时订阅API发出的所有订阅请求。为此,我有一个回调网址“http://mysite.com/sub”,我希望能通过Tornado接收到这些请求。
2 个回答
你需要创建一个自定义的应用程序(监听一个端口),记下分配给你应用的端口,然后配置tornado让它在那个端口上运行:http_server.listen(我的端口)。
你也可以不使用tornado,直接安装一个django应用来启动。
你正在使用8080端口启动服务器,而网页浏览器默认使用80端口。所以你可以试试这个链接:http://mywebsite.com:8080/hello-tornado
如果你想使用80端口,但你的机器上已经有一个网页服务器在运行,你可以试试Ali-Akber Saifee的建议,或者直接从服务器运行WSGI应用程序,使用像mod_python这样的工具(http://www.modpython.org)。不过这样的话,你就不能运行Tornado的代码了,但Django是可以正常工作的。