Я разрабатываю простое веб-приложение с торнадо. Он обслуживает некоторые динамические файлы и некоторые статические. Динамические проблемы не являются проблемой, но мне трудно обслуживать статический файл. То, что я хочу сделать, это обслуживать файл /path/to/foo.json при доступе к URL-адресу /foo.json.Как Tornado может обслуживать один статический файл в произвольном месте?
Обратите внимание, что /path/to/foo.json находится вне корня документа. В Apache я бы просто создал псевдоним. С Торнадо у меня есть:
app = tornado.web.Application([
(r'/dynamic\.html', MyService, dict(param = 12345)),
(r'/(foo\.json)', tornado.web.StaticFileHandler, {'path': '/path/to/foo.json'})
])
Я добавил регулярное выражение оператора группы ()
, чтобы удовлетворить Торнадо, который выбросил исключение иначе. Но теперь, когда я обращаюсь к /foo.json, я получаю 404: Файл не найден.
Тесты показывают, что Tornado пытается использовать путь, предоставленный в качестве корневого каталога, к которому он добавляет foo.json, подразумевая, что мой файл можно найти, если он находится в /path/to/foo.json/foo.json. Закрыть, но не совсем.
Я предполагаю, что я мог бы сократить свой путь до простого «/ path/to», который вызовет выборку /path/to/foo.json по URL-адресу /foo.json, но это заставляет меня использовать тот же имя в URL-адресе, как в файловой системе. Как я могу просто сделать простой, произвольный URL-адрес для сопоставления файлов?
Я сделал некоторые исследования по этому вопросу, читая документацию для tornado.web.Application и tornado.web.StaticFilehandler, а также некоторые otherSOquestions. Ничто не является моим прецедентом.
Итак, произвольное сопоставление файлов, что вы хотите, это сопоставить, скажем, URL 'yourdomain.com/path/to/foo.json' с' yourfilesystem/path/to/bar.json'? Я думаю, вы должны включить это в свой вопрос (т. Е. Использовать другое имя в примере, не используя 'foo.json' как в URL-адрес, так и в файловой системе) – justhalf
Я упоминаю это в своем втором-последнем абзаце, @justhalf, но, возможно, это может быть яснее. –
Да, я хочу включить то, что вы называете в своем втором последнем абзаце в вашем примере. Потому что ваш пример действительно не представляет собой ваш реальный вопрос. – justhalf