Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 19, 2015 13:54:47

dbogdanoff
От: Калининград
Зарегистрирован: 2015-12-19
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Запуск сервера Tornado

Имеется VPS-сервер CentOS 6.6, Python 2.6
На нём есть десяток работающих сайтов на php, связка серверов apache/nginx
Это немного о сервере.

В целом с web-технологиями знаком и в сфере работаю давно, но Python изучаю недавно.
Сейчас передо мной стоит задача запустить сервер Tornado на Python'е и вывезти ‘Hello, World’ в браузере пользователя. В будущем хочу попробовать Tornado как websocket.

И мне понадобилась помощь, так как Tornado пока не поддаётся.
Скачал Tornado с сайта http://tornado.readthedocs.org/en/stable/
Выполнил установку:

tar xvzf tornado-4.3.tar.gz
cd tornado-4.3
python setup.py build
python setup.py install

Создаю app.py:
import tornado.ioloop
import tornado.web
class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, world")
def make_app():
    return tornado.web.Application([
        (r"/", MainHandler),
    ])
if __name__ == "__main__":
    app = make_app()
    app.listen(9000)
    tornado.ioloop.IOLoop.current().start()

Запускаю:
python app.py
Приложение запускается без ошибок, вывода на экран никаких сообщений нет.

Далее открываю браузер и ввожу IP сервера http://213.136.83.249:9000/
Страница долго пытается загрузиться и выпадает с ошибкой:
ERR_CONNECTION_TIMED_OUT

80 и 8888 порты заняты nginx'ом и апачем, соответственно.

Далее возвращаюсь в терминал и прерываю выполнение программы Ctrl+C, после чего вижу, как я понял, исключительную ошибку:
Traceback (most recent call last):
  File "app.py", line 29, in <module>
    tornado.ioloop.IOLoop.current().start()
  File "/root/tornado/tornado-4.3/tornado/ioloop.py", line 858, in start
    event_pairs = self._impl.poll(poll_timeout)
KeyboardInterrupt

Подскажите, что не так?

Офлайн

#2 Дек. 19, 2015 14:09:41

dbogdanoff
От: Калининград
Зарегистрирован: 2015-12-19
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Запуск сервера Tornado

Если вызвать demo-приложение helloworld.py поставляемое с сервером Tornado, то картина примерно та же:

helloworld.py:

import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
from tornado.options import define, options
define("port", default=8686, help="run on the given port", type=int)
class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, world")
def main():
    tornado.options.parse_command_line()
    application = tornado.web.Application([
        (r"/", MainHandler),
    ])
    http_server = tornado.httpserver.HTTPServer(application)
    http_server.listen(options.port)
    tornado.ioloop.IOLoop.current().start()
if __name__ == "__main__":
    main()

Ctrl+C:
Traceback (most recent call last):
  File "demos/helloworld/helloworld.py", line 43, in <module>
    main()
  File "demos/helloworld/helloworld.py", line 39, in main
    tornado.ioloop.IOLoop.current().start()
  File "/usr/lib64/python2.6/site-packages/tornado-4.3-py2.6-linux-x86_64.egg/tornado/ioloop.py", line 858, in start
    event_pairs = self._impl.poll(poll_timeout)
KeyboardInterrupt

Офлайн

#3 Дек. 19, 2015 14:25:10

4kpt_III
Зарегистрирован: 2014-12-22
Сообщения: 999
Репутация: +  39  -
Профиль   Отправить e-mail  

Запуск сервера Tornado

dbogdanoff
http://213.136.83.249:9000/

Попробуйте.

http://127.0.0.1:9000/

Отредактировано 4kpt_III (Дек. 19, 2015 14:27:03)

Офлайн

#4 Дек. 19, 2015 14:37:35

dbogdanoff
От: Калининград
Зарегистрирован: 2015-12-19
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Запуск сервера Tornado

В работе используется удалённый Web-сервер https://contabo.com/?show=configurator&vserver_id=145
Не локально!

Офлайн

#5 Дек. 19, 2015 14:57:23

4kpt_III
Зарегистрирован: 2014-12-22
Сообщения: 999
Репутация: +  39  -
Профиль   Отправить e-mail  

Запуск сервера Tornado

А локально он работает?

Офлайн

#6 Дек. 19, 2015 15:02:00

dbogdanoff
От: Калининград
Зарегистрирован: 2015-12-19
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Запуск сервера Tornado

Локально и не пробовал.
Моя машина под управлением windows, полагаю, что это не проблема, но локально мне задачу не надо решать.

Офлайн

#7 Дек. 19, 2015 15:04:17

4kpt_III
Зарегистрирован: 2014-12-22
Сообщения: 999
Репутация: +  39  -
Профиль   Отправить e-mail  

Запуск сервера Tornado

Понимаете, я никогда не сталкивался с такой ошибкой, сколько не использовал торнаду. Поэтому хотел определить, что проблема именно на сервере. Если он локально работает, а на сервере нет - значит нужно копать настройки. Нашел только это

P.S. Проверил. Работает без проблем.

Отредактировано 4kpt_III (Дек. 19, 2015 15:07:02)

Офлайн

#8 Дек. 19, 2015 15:12:35

dbogdanoff
От: Калининград
Зарегистрирован: 2015-12-19
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Запуск сервера Tornado

Настройки, возможно…
Мне также сейчас главное выявить, правильно ли я понял вообще принцип запуска сервера, что я запускаю файл в терминале и сразу же могу стучаться на сервер. Всю жизнь работал с apache, nginx и для меня это ой как непривычно



Другие файлы в списке на скриншоте, это я пробовал разные способы сборки из интернета.
На скриншоте видно, что я запустил файл app.py после чего делаю http-запрос с браузера.
Там вижу упомянутую выше ошибку и прерываю выполнение Ctrl+C

Офлайн

#9 Дек. 19, 2015 15:22:17

4kpt_III
Зарегистрирован: 2014-12-22
Сообщения: 999
Репутация: +  39  -
Профиль   Отправить e-mail  

Запуск сервера Tornado

Неее. Это неправильно, естественно. Хотя вам сначала нужно его нормально заставить работать.
У меня в проектах торнаду держит supervisor. Он и поднимает, торнаду, если она упадет.

Офлайн

#10 Дек. 19, 2015 16:18:52

Period
Зарегистрирован: 2015-10-07
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

Запуск сервера Tornado

KeyboardInterrupt означает, что вы прервали выполнение скрипта сочетанием клавиш Ctrl+C. К вашей проблеме это не имеет отношения.

Что там с файрволлом у вас? Очень похоже именно на его работу.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version