Образец Python в Bluemix отображает исходный код вместо вывода HTML — почему?

Я пробую Python на Bluemix. Для этого я решил перенести пример из книги, который отлично работал на моем ноутбуке с Windows. Я создал пример приложения Bluemix, затем заменил index.html html-файлом из примера и построил свое дерево каталогов под статическим каталогом. Сервер запускается нормально и отображает вводный html-файл, как и ожидалось, но когда я нажимаю на ссылку, которая должна создать мою html-страницу, он отображает страницу как исходный код, а не выполняет ее. В Windows это работает отлично. Мой вызов на страницу выглядит так:

<a href="cgi-bin/generate_mypage.py">My data</a>. 

Я слышал, что в среде Linux вам иногда нужно указать исполняемый файл python, но как правильно его расположить в среде Bluemix? Другой вопрос, если файл .py настроен как исполняемый, но я не знаю, как вы устанавливаете такую ​​​​вещь в Bluemix.

Вся помощь приветствуется.


person Ulf Edholm    schedule 27.04.2015    source источник
comment
Некоторые детали, такие как то, что вы пытаетесь запустить, могут помочь   -  person shaunakde    schedule 27.04.2015
comment
Можете ли вы опубликовать содержимое вашего manifest.yml? Также вы привязываете свое приложение Python к VCAP_APP_PORT для запуска? Также какова структура каталогов вашего приложения?   -  person Jeff Sloyer    schedule 27.04.2015
comment
Что делает generate_page.py?   -  person Jeff Sloyer    schedule 27.04.2015
comment
приложения: - disk_quota: 1024M buildpack: python_buildpack host: uffepython name: pythontest path: . домен: eu-gb.mybluemix.net экземпляры: 1 память: 128M   -  person Ulf Edholm    schedule 27.04.2015
comment
Это был мой manifest.yml. (В основном то же самое, что вы получаете с образцом в Bluemix). По умолчанию из примера статического каталога у меня есть пять каталогов cgi-bin, data, images, stylesheets, templates. Файл generate_page.py динамически создает html-файл из некоторых данных. (Обратите внимание, что эта страница нормально работала вне Bluemix)   -  person Ulf Edholm    schedule 27.04.2015
comment
Также два важных момента: веб-сервер python запускается нормально, поэтому в основном эта часть правильно вызывает python. Также index.html должен иметь возможность найти страницу в cgi-bin по мере отображения исходного кода. Просто кажется, что он не понимает, что он должен быть выполнен.   -  person Ulf Edholm    schedule 27.04.2015


Ответы (1)


Вы не можете напрямую ссылаться на файл Python в веб-приложении Python. Вы должны использовать что-то вроде Flask для обслуживания вашего приложения. Flask может выполнить маршрутизацию за вас.

Кроме того, в Bluemix и других платформах как сервисах существует только одна бинарная точка входа в ваше приложение. У вас не может быть нескольких бинарных точек входа.

Посмотрите этот пример приложения, чтобы узнать, как развернуть приложение Flask.

Кроме того, вы можете нажать кнопку ниже, чтобы напрямую развернуть пример приложения в Bluemix.

Развертывание в Bluemix

person Jeff Sloyer    schedule 27.04.2015
comment
Спасибо за информацию Джефф. Я могу сделать прямую ссылку на свой локальный компьютер, на котором запущено веб-приложение Python, которое у меня там запущено, поэтому это ограничение должно быть только для веб-приложений Paas Python. Единственная двоичная точка означает ли это, что я не могу смешивать статические и динамические веб-страницы в среде Paas? Я попробую ваш образец фляги и посмотрю, поможет ли он моим проблемам. Очень признателен - person Ulf Edholm; 27.04.2015
comment
У вас должна быть одна точка входа. Вам нужно создать классы Python и запустить их из одного бинарного приложения. Это верно для всех облачных приложений. - person Jeff Sloyer; 27.04.2015
comment
Просто чтобы уточнить это для меня, вы имеете в виду облачные приложения или приложения на основе веб-сервера. Причина, по которой я спрашиваю, так как в среде, где это работает, находится на моем собственном компьютере, но я все еще создаю python HttpServer. Хм, я заметил, что теперь в локальной версии я использую CGIHTTPRequestHandler при запуске своего сервера. Может это решит мою проблему - person Ulf Edholm; 27.04.2015
comment
Я настоятельно рекомендую вам изучить веб-фреймворк Python, такой как flask. - person Jeff Sloyer; 27.04.2015
comment
@JeffSloyer слишком скромен, чтобы упоминать об этом, но он задокументировал это в своем блоге Простое приложение Hello World Python с использованием Flask. - person Dan Kehn; 27.04.2015