如何使用Django与Tornado Web服务器?

xRo*_*bot 27 django ajax webserver comet tornado

如何将Django与Tornado Web服务器一起使用?

Moa*_*ghi 46

它非常简单(尤其是django 1.4).

1 - 只需构建你的django项目(和应用程序)并确保它正常工作.

2-在根文件夹中创建一个新的python文件(你使用的dir相同django-admin.py startproject)

3-然后复制下面的代码,编辑该os.environ['DJANGO_SETTINGS_MODULE']行,并将其粘贴到新的.py文件中.

import os
import tornado.httpserver
import tornado.ioloop
import tornado.wsgi
import sys
import django.core.handlers.wsgi
#sys.path.append('/home/lawgon/') # path to your project ( if you have it in another dir).


def main():
    os.environ['DJANGO_SETTINGS_MODULE'] = 'myProject.settings' # path to your settings module
    application = django.core.handlers.wsgi.WSGIHandler()
    container = tornado.wsgi.WSGIContainer(application)
    http_server = tornado.httpserver.HTTPServer(container)
    http_server.listen(8888)
    tornado.ioloop.IOLoop.instance().start()

if __name__ == "__main__":
    main()
Run Code Online (Sandbox Code Playgroud)

Django 1.6+应该是这样的:

import os
import tornado.httpserver
import tornado.ioloop
import tornado.wsgi
from django.core.wsgi import get_wsgi_application

def main():
    os.environ['DJANGO_SETTINGS_MODULE'] = 'myproject.settings' # path to your settings module
    application = get_wsgi_application()
    container = tornado.wsgi.WSGIContainer(application)
    http_server = tornado.httpserver.HTTPServer(container)
    http_server.listen(8888)
    tornado.ioloop.IOLoop.instance().start()

if __name__ == "__main__":
    main()
Run Code Online (Sandbox Code Playgroud)

  • 这很棒.这很快就奏效了. (4认同)

tam*_*gal 5

更新:

我创建了一个最小的工作演示,演示了如何使用Tornado Web服务器与django良好地运行:

https://github.com/tamasgal/django-tornado

原始邮寄:

只是一句话:WSGI应用程序工作流程已从1.6更改为1.7.您必须替换导入

import django.core.handlers.wsgi
Run Code Online (Sandbox Code Playgroud)

from django.core.wsgi import get_wsgi_application
Run Code Online (Sandbox Code Playgroud)

并更改应用程序初始化

application = django.core.handlers.wsgi.WSGIHandler()
Run Code Online (Sandbox Code Playgroud)

application = get_wsgi_application()
Run Code Online (Sandbox Code Playgroud)

这是Moayyad Yaghi的答案修改后的代码:

import os
import tornado.httpserver
import tornado.ioloop
import tornado.wsgi
import sys
import django.core.handlers.wsgi
from django.core.wsgi import get_wsgi_application
#sys.path.append('/home/lawgon/') # path to your project ( if you have it in another dir).


def main():
    os.environ['DJANGO_SETTINGS_MODULE'] = 'myProject.settings' # path to your settings module
    application = django.core.handlers.wsgi.WSGIHandler()
    application = get_wsgi_application()
    container = tornado.wsgi.WSGIContainer(application)
    http_server = tornado.httpserver.HTTPServer(container)
    http_server.listen(8888)
    tornado.ioloop.IOLoop.instance().start()

if __name__ == "__main__":
    main()
Run Code Online (Sandbox Code Playgroud)


MyG*_*GaN 4

有一个名为“龙卷风代理”的项目可以帮助您。但我建议你使用Nginx。在 Nginx 配置中,您现在可以使用 proxy_pass 来引导您的调用,如下所示:

location /comet {
  proxy_pass http://localhost:8081;
}

location / {
  proxy_pass http://localhost:8080;
}
Run Code Online (Sandbox Code Playgroud)

  • Django 不是网络服务器。它附带了一个基本的 Web 服务器来帮助开发 Django 项目,但不适合在生产环境中使用。 (23认同)