2010-03-28 16 views

उत्तर

4

tornado-proxy नामक एक प्रोजेक्ट है जो आपकी मदद करेगा। लेकिन मैं अनुशंसा करना चाहता हूं कि आप Nginx का उपयोग करें। Nginx config में आप अब इस तरह अपने कॉल प्राप्त कर proxy_pass इस्तेमाल कर सकते हैं:

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

location/{ 
    proxy_pass http://localhost:8080; 
} 
+22

Django वेब सर्वर नहीं है। यह डीजेगो परियोजनाओं के विकास में सहायता के लिए एक बुनियादी वेब सर्वर के साथ आता है, लेकिन जो उत्पादन वातावरण में उपयोग करने के लिए उपयुक्त नहीं है। –

+1

पूरी तरह से सही, हालांकि मुझे लगता है कि xRobot अपने वेब प्रोजेक्ट के निर्माण के लिए एक पूर्ण वेबसर्वर/ढांचे के रूप में Django (इसके वेबसर्वर के साथ) का उपयोग कर रहा था। मैंने उसे ब्योरा दिया। – MyGGaN

+0

मैंने अपने कंप्यूटर पर चैट और टर्ननाडो के साथ खेला है और यह पूरी तरह से काम करता है। मेरे सर्वर पर मैं nginx और django ढांचे का उपयोग कर रहा हूं लेकिन मुझे नहीं पता कि टोरनाडो कहां रखा जाए। पी। क्या आपने Nginx के लिए पुश मॉड्यूल भी कोशिश की है? धन्यवाद;) – xRobot

2

असली दुनिया में आप Django और WSGI के साथ कुछ उत्पादन के लिए तैयार वेबसर्वर जोड़ेगी। यह डेमो दिखाता है कि आप विभिन्न यूआरएल उपसर्गों की सेवा करते हुए एक पायथन मॉड्यूल से टॉरनाडो (और इसका वेबसर्वर) और डीजेगो पक्ष कैसे चला सकते हैं: https://github.com/bdarnell/django-tornado-demo। टोरनाडो हालांकि Django को निर्देशित किसी भी अनुरोध की सेवा करने पर रोक देगा।

+0

आश्चर्यजनक रूप से उपयोगी, django-tornado-demo – securecurve

45

यह बहुत आसान है (विशेष रूप से django 1.4 के साथ)।

1 - बस अपनी डीजेंगो परियोजना (और ऐप्स) बनाएं और सुनिश्चित करें कि यह ठीक काम करता है।

2 रूट फ़ोल्डर में एक नया अजगर फ़ाइल (समान 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() 

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() 
+4

के लिए धन्यवाद यह उत्कृष्ट है। यह तुरंत काम किया। – Glycerine

+1

ब्रावो! मैं वास्तव में कोशिश करने की उम्मीद कर रहा हूँ! – Jon

+0

new.py फ़ाइल को कैसे कॉल करें – Shiva

4

अद्यतन:

मैं एक न्यूनतम काम कर डेमो से पता चलता है जो कि कैसे के साथ अच्छी तरह से चलाने के लिए तूफान वेब सर्वर का उपयोग करने के लिए बनाया django:

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

मूल पोस्ट:

बस एक टिप्पणी: डब्लूएसजीआई आवेदन वर्कफ़्लो 1.6 से 1.7 में बदल दिया गया है। आप

from django.core.wsgi import get_wsgi_application 

साथ आयात

import django.core.handlers.wsgi 

की जगह और यह संशोधित कॉड है

application = django.core.handlers.wsgi.WSGIHandler() 

से

application = get_wsgi_application() 

के लिए आवेदन initialisation बदलना होगा मोयायाद यागी के उत्तर से:

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() 
संबंधित मुद्दे