Làm cách nào để sử dụng Django với máy chủ web Tornado?Cách sử dụng Django với máy chủ web Tornado?
Trả lời
Có một dự án gọi là tornado-proxy sẽ giúp bạn. Nhưng tôi muốn khuyên bạn nên sử dụng Nginx. Trong cấu hình Nginx bây giờ bạn có thể sử dụng proxy_pass chỉ đạo các cuộc gọi của bạn như thế này:
location /comet {
proxy_pass http://localhost:8081;
}
location/{
proxy_pass http://localhost:8080;
}
Trong thế giới thực, bạn sẽ kết nối Django và một số máy chủ web sản xuất sẵn sàng với WSGI. Bản demo này cho thấy cách bạn có thể chạy Tornado (và đó là máy chủ web) và Django cạnh nhau từ một mô-đun python phục vụ các tiền tố URL khác nhau: https://github.com/bdarnell/django-tornado-demo. Tornado sẽ chặn phục vụ bất kỳ yêu cầu nào được chuyển đến Django.
Thật hữu ích, cảm ơn vì django-tornado-demo – securecurve
nó rất đơn giản (đặc biệt là với django 1.4).
1 - chỉ cần xây dựng dự án django của bạn (và ứng dụng) và đảm bảo nó hoạt động tốt.
2- tạo một file python mới tại thư mục gốc (giống dir nơi bạn sử dụng django-admin.py startproject
)
3- sau đó copy đoạn code bên dưới, chỉnh sửa các dòng os.environ['DJANGO_SETTINGS_MODULE']
, và dán nó vào tập tin đó py mới.
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 + nó phải như thế này:
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()
UPDATE:
Tôi tạo ra một bản demo làm việc tối thiểu trong đó cho thấy làm thế nào để sử dụng máy chủ web Tornado để chạy độc đáo với django:
https://github.com/tamasgal/django-tornado
BÀI ĐĂNG ORIGINAL:
Chỉ cần lưu ý: Luồng ứng dụng WSGI đã được thay đổi từ 1,6 đến 1,7. Bạn phải thay thế nhập khẩu
import django.core.handlers.wsgi
với
from django.core.wsgi import get_wsgi_application
và thay đổi khởi động ứng dụng từ
application = django.core.handlers.wsgi.WSGIHandler()
để
application = get_wsgi_application()
Đây là cá tuyết sửa đổi e từ câu trả lời của 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()
- 1. Sử dụng Django trừ máy chủ web
- 2. Đăng lên máy chủ Tornado
- 3. Tornado với Django
- 4. Cách tốt nhất để chạy Django trên máy chủ web Tornado để có async + django admin + khả năng orm django là gì?
- 5. Sử dụng Máy chủ web mỏng với HTTP và HTTPS
- 6. Máy chủ socket.io tốt nhất để sử dụng với Django - gevent hoặc tornadio2 là gì?
- 7. Làm thế nào để đăng nhập yêu cầu stdout trong máy chủ web Tornado?
- 8. Sử dụng máy chủ web tích hợp của Django trong môi trường sản xuất
- 9. Làm thế nào để bạn chạy máy chủ web Tornado cục bộ?
- 10. Cách sử dụng cả máy chủ ứng dụng và máy chủ http trong ứng dụng web java
- 11. REMOTE_ADDR không nhận được gửi đến Django sử dụng nginx & tornado
- 12. Sử dụng Node.JS làm máy chủ REST và máy chủ web
- 13. Giao diện máy chủ web với PHP
- 14. Có thể sử dụng AWS làm máy chủ web không?
- 15. Máy chủ web/Servlet tốt cho ứng dụng web Clojure?
- 16. Tạo cơ sở dữ liệu web/máy chủ để sử dụng với ứng dụng android
- 17. Làm thế nào tôi có thể sử dụng ORM Django trong ứng dụng Tornado của tôi?
- 18. Cách sử dụng IP máy chủ khác với PHP/cURL?
- 19. Máy chủ web Dwscript
- 20. Máy chủ web Javascript?
- 21. vấn đề chạy hello world với máy chủ web lốc xoáy (Python 2.5, Win 7)
- 22. Cách truy cập máy chủ web Django địa phương từ thế giới bên ngoài
- 23. Máy chủ web nhỏ
- 24. Cách sử dụng C++ cho máy chủ apache
- 25. tải tệp html từ máy chủ web bằng cách sử dụng khoảng cách điện thoại
- 26. Tương tác Mathematica 8.0 với máy chủ web JSP sử dụng HTTP POST và XML
- 27. Triển khai Django trên máy chủ apache
- 28. máy chủ web hướng sự kiện là gì
- 29. ứng dụng web tồn tại trên cả máy chủ web IIS cục bộ và máy chủ web IIS Express
- 30. Máy chủ Django vĩnh viễn
Django không phải là máy chủ web. Nó đi kèm với một máy chủ web cơ bản để hỗ trợ trong việc phát triển các dự án Django, nhưng không thích hợp để được sử dụng trong môi trường sản xuất. –
Hoàn toàn đúng, mặc dù tôi giả định rằng xRobot đã sử dụng Django (với máy chủ web của nó) như một máy chủ web hoàn chỉnh/khuôn khổ để xây dựng dự án web của mình. Tôi tha cho anh ta chi tiết. – MyGGaN
Tôi đã chơi với trò chuyện và lốc xoáy trên máy tính của mình và nó hoạt động hoàn hảo. Trên máy chủ của tôi, tôi đang sử dụng khung nginx và django nhưng tôi không biết đặt Tornado ở đâu. P.s. Bạn đã thử Push Module cho Nginx chưa? Cảm ơn;) – xRobot