部署Django至Twisted服务器



    Twisted是一套非常酷的网络开发库,基于python.如果能够自主开发网络服务器的话,
那么这样可以控制更多的东西。前两天搞着看django-on-twisted,这个东东看着挺吸引,>而且支持负载均衡,但是一直搞了几天竟然搞不定。无奈之急,追根朔源,看看有没有直接
可用的方法来将django部署在twisted的服务器上面。
    >>测试环境:mandriva2009 + python2.5+django1.0
    >>源码:
--见最下面,注意,具体要将demo.settings改为其它项目名.settings
    >>注意:在debian下面做测试的时候发现问题,说是项目无法找到,解决办法是在os.envion上面加一句类似sys.path.append('/root/operate')的语句。这样可以让程序找到路径

    >>后续问题:django-on-twisted更有诱惑力,应该更加把劲研究一下。另外,twisted>库也应该多看一下,在网络开发方面很强大。
    >>关于twisted的安装,在mandriva下面通过源码安装好twisted和twisted.web2后,发
现直接在python里面运行的时候有问题,import twisted及twisted.web没问题,但是import twisted.web2有问题。例如python安装路径为/usr/lib/python2.5/site-package/下面,
那么其实这两个包装在两个路径下面,将twisted下面的目录放到Twisted-8.0.egg/下面,>大概是这个样子,具体看实际情况了。
               
               
                # Copyright (c) 2001-2004 Twisted Matrix Laboratories.
# See LICENSE for details.
"""I am a simple test resource.
"""
import os.path, os
from twisted.web2 import log, wsgi
from twisted.internet import reactor
# This part gets run when you run this file via: "twistd -noy demo.py"
if __name__ == '__builtin__':
    from twisted.application import service, strports
    from twisted.web2 import server, vhost
    #from twisted.web2 import http as channel
    from twisted.web2 import channel
    from twisted.web import http
    #from twisted.internet.ssl import DefaultOpenSSLContextFactory
    from twisted.python import util
    # Create the resource we will be serving
    from django.core.handlers.wsgi import  WSGIHandler
    from django.core.servers.basehttp import AdminMediaHandler
    os.environ['DJANGO_SETTINGS_MODULE'] = 'demo.settings'
    test = wsgi.WSGIResource(AdminMediaHandler(WSGIHandler()))
    # Setup default common access logging
    res = log.LogWrapperResource(test)
    log.DefaultCommonAccessLoggingObserver().start()
    # Create the site and application objects
    site = server.Site(res)
    application = service.Application("demo")
    # Serve it via standard HTTP on port 8080
    s = strports.service('tcp:8080', channel.HTTPFactory(site))
    s.setServiceParent(application)
    # Serve it via HTTPs on port 8081
    #s = strports.service('ssl:8081:privateKey=doc/core/examples/server.pem', channel.HTTPFactory(site))
    #s.setServiceParent(application)