Просматривая demos, TornadoGists и other gist snippets (на основе this previous question), я не нашел никакого кода, эквивалентного SimpleHTTPServer
из стандартной библиотеки в Python. Я ищу действительно небольшой веб-сервер, который может обрабатывать параллельные запросы, со всем шаблоном, который SimpleHTTPServer
включает в себя для обслуживания файлов из каталога запуска.Есть ли эквивалент Tornado SimpleHTTPServer?
1
A
ответ
2
ОБНОВЛЕНИЕ: от Tornado 3, используйте встроенный StaticFileHandler.
Tornado не предназначен для обслуживания статических файлов. Если это увидит какую-либо нагрузку, вы должны использовать nginx или что-то в этом роде. И если этого не произойдет, может быть проще использовать SimpleHTTPServer
.
Тем не менее, это тривиально, чтобы написать один:
import os.path
import mimetypes
import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
class FileHandler(tornado.web.RequestHandler):
def get(self, path):
if not path:
path = 'index.html'
if not os.path.exists(path):
raise tornado.web.HTTPError(404)
mime_type = mimetypes.guess_type(path)
self.set_header("Content-Type", mime_type[0] or 'text/plain')
outfile = open(path)
for line in outfile:
self.write(line)
self.finish()
def main():
tornado.options.enable_pretty_logging()
application = tornado.web.Application([
(r"/(.*)", FileHandler),
])
http_server = tornado.httpserver.HTTPServer(application)
http_server.listen(8888)
tornado.ioloop.IOLoop.instance().start()
if __name__ == "__main__":
main()
Это просто, чтобы вы начали; если вы собираетесь использовать его, вы должны убедиться, что не можете подойти к файловой системе и получить доступ к любому файлу. Кроме того, скрипт в настоящее время обслуживает себя, что немного странно.
Смежные вопросы
- 1. Tornado эквивалент данных TwistedReceived?
- 2. Есть ли ⇧ есть эквивалент?
- 3. Есть ли эквивалент super.super()?
- 4. Есть ли какая-либо разница между Express и SimpleHTTPServer
- 5. Эквивалент jquery $ .when в Python Tornado
- 6. - это apache, если у нас есть встроенный в python SimpleHttpServer
- 7. Есть ли RichTextBox эквивалент ListBox.ItemTemplate?
- 8. Есть ли эквивалент CUDA perror()?
- 9. Есть ли метеорный эквивалент cordova.exec?
- 10. Есть ли потоковой эквивалент WatiForMultipleObjects
- 11. Есть ли неглобальный эквивалент perlbrew?
- 12. C#: есть ли JTable эквивалент?
- 13. Есть ли неблокирующий эквивалент JavaPlot.plot()?
- 14. Есть ли dot42 эквивалент System.Net.Sockets.UdpClient?
- 15. Есть ли Java-эквивалент frexp?
- 16. Есть ли эквивалент Scala петапоко?
- 17. Есть ли. Net эквивалент java.util.concurrent.Executor?
- 18. Есть ли эквивалент Julia numpy.digitize?
- 19. Есть ли двоичный эквивалент System.Text.StringBuilder?
- 20. Есть ли эквивалент ColdFusion phpinfo()
- 21. Есть ли эквивалент Java SignalR?
- 22. Есть ли байт-эквивалент оболочки?
- 23. Есть ли Ruby-эквивалент XMLUnit?
- 24. Tidyjson: есть ли эквивалент 'exit_object()'?
- 25. Есть ли эквивалент AppCompat Widget.Material.Spinner.Underlined?
- 26. Есть ли .gemrc.local или эквивалент?
- 27. Есть ли vim эквивалент bash '! $'?
- 28. Есть ли эквивалент RRDTool .net
- 29. Есть ли весенний эквивалент @Startup?
- 30. Есть ли эквивалент packaged_task :: set_exception?
Как я уже упоминал в вопросе, я ищу обработку нескольких запросов одновременно. 'SimnpleHTTPServer' не справляется с этим, по крайней мере, не из коробки. Я попробую ваш пример сегодня вечером, но с тех пор я попробовал Nginx и, похоже, отвечал моим потребностям. – technomalogical
Ах, не понял, что 'SimpleHTTPServer' не параллелен, но, конечно, это имеет смысл. Если у вас есть настройка Nginx, придерживайтесь ее; Это будет быстрее и надежнее. –
Да, в основном я хотел кое-что, что было низким профилем и было легко настроить. Не работая с Nginx раньше, я не понимал, насколько мал он был сопоставлен с Apache. – technomalogical