2013-02-24 115 views
2

我從web開發開始。我正在嘗試使用Instagram API和Django開發和webapp。我在看很多人使用Tornado Web Server進行實時訂閱。所以我用Webfaction作爲主機,發現這個代碼,所以我可以換我的Django項目與「WSGI容器」是旋風式Web服務器提供:webfaction中的龍捲風web服務器

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 Web服務器,但不知道如何從瀏覽器訪問或者類似的東西。我在這裏做錯了什麼?感謝您的幫助和耐心。每個答案都會網絡高五。

編輯:我真的想要做的是,我想接收所有來自我通過Tornado與Instagram實時訂閱API訂閱的電話,因爲我有一個回調URL「http://mysite.com/sub」,我想要能夠通過龍捲風接收。

+0

什麼是您的webfaction框上運行的主要網絡服務器?如果它的apache可以添加一個代理指令來將請求重定向到http://mywebsite.com/hello-tornado到http:// localhost:8080/hello-tornado(http://httpd.apache.org/docs/2.2 /mod/mod_proxy.html) – 2013-02-24 23:17:18

+0

我發現這是Apache2,我必須在「httpd.conf」中配置它嗎? – 2013-02-25 00:28:49

+0

是的,你需要啓用mod_proxy並在那裏添加相關的proxypass指令。 – 2013-02-25 00:32:49

回答

2

您開始在端口8080的服務器,Web瀏覽器在默認情況下使用端口80,請嘗試使用:http://mywebsite.com:8080/hello-tornado

,如果你想使用端口80,你已經在你可以試試箱運行Web服務器按照Ali-Akber Saifee的建議,或者直接從服務器運行WSGI應用程序,使用諸如mod_python(http://www.modpython.org)之類的東西,你將失去運行Tornado代碼的能力,但Django可以工作。

+0

絕對有效,謝謝你們。對於兩者都是Cyber​​ HIGH FIVE。 – 2013-02-26 23:30:32

0

您必須創建自定義應用程序(偵聽端口),記下分配給您的應用程序的端口,然後配置龍捲風以在該端口上提供服務:http_server.listen(我的端口) 您還可以避免龍捲風並啓動直接通過安裝一個Django應用程序。