2014-07-15 3 views
3

Я пытался использовать веб-сервер Tornado обслуживать статические файлы, однако при запуске сервера я получаю 404 ошибки для статических файлов:404 GET (Попытка использовать Tornado сервер для обслуживания статических файлов):

[I 140715 17:16:50 wsgi:358] 200 GET /myapp/index/ (127.0.0.1) 99.01ms 
[W 140715 17:16:50 wsgi:358] 404 GET /static/logo_small_white.png (127.0.0.1) 5.68ms 
[I 140715 17:17:04 wsgi:358] 200 GET /myapp/index/ (127.0.0.1) 6.02ms 
[W 140715 17:17:05 wsgi:358] 404 GET /static/logo_small_white.png (127.0.0.1) 5.05ms 

Это блок кода, который я использую для запуска сервера:

#!/usr/bin/env python 

# Run this with 
# PYTHONPATH=. DJANGO_SETTINGS_MODULE=testsite.settings testsite/tornado_main.py 
# Serves by default at 
# http://localhost:8080/hello-tornado and 
# http://localhost:8080/hello-django 

from tornado.options import options, define, parse_command_line 
import django.core.handlers.wsgi 
import tornado.httpserver 
import tornado.ioloop 
import tornado.web 
import tornado.wsgi 
import os 

define('port', type=int, default=8080) 

class HelloHandler(tornado.web.RequestHandler): 
    def get(self): 
    self.write('Hello from tornado') 

def main(): 
    settings = { 
    "static_path": os.path.join(os.path.dirname(__file__), "static"), 
    } 
    parse_command_line() 
    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)), 
     (r'/static/(.*)', tornado.web.StaticFileHandler, {'path': "/home/me/Downloads/javaAutoGraderBuilding/django-tornado-demo-master/testsite/static"}), 
     ]) 
    server = tornado.httpserver.HTTPServer(tornado_app) 
    server.listen(options.port) 
    tornado.ioloop.IOLoop.instance().start() 

if __name__ == '__main__': 
    main() 

Я пытался добавить обработчик для статического файла, но я получаю сообщение об ошибке 404. Спасибо за любые решения.

ответ

5

Используется первый обработчик соответствия, который в данном случае является FallbackHandler (который соответствует всем:. ".*" Переместить это после /static/(.*) правило

+0

Это был большой ответ, но так просто TY – Eddie

+0

я хочу.! также знать, как я смогу запустить этот исполняемый файл в качестве фоновой задачи, а не просто делать _PYTHONPATH =. DJANGO_SETTINGS_MODULE = testsite.settings testsite/tornado_main.py_ Спасибо! – Eddie

Смежные вопросы