Как запустить приложение-пирамиду в движке Google App - PullRequest
0 голосов
/ 22 ноября 2018

Я пытался запустить пирамиду в движке приложений Google, но у меня ничего не вышло.Я пытался следовать инструкции здесь , но это кажется устаревшим, потому что у gae больше нет appcfg.py.Я следовал руководству по флеш-приложению в документации по движку приложения, комбинируя его с приведенным выше, чтобы получить следующее: app.yaml

runtime: python
env: flex

runtime_config:
  python_version: 3
threadsafe: false

handlers:
- url: /static
  static_dir: contractors/static
- url: /.*
  script: auto

затем main.py:

from pyramid.paster import get_app, setup_logging
ini_path = 'production.ini'
setup_logging(ini_path)
app = get_app(ini_path, 'main')

В консоли оболочки appengine, Я клонировал репозиторий проекта, установил все в virtualenv, затем попытался запустить python main.py Но возвращается, что дистрибутив для моего проекта не найден.Затем я использовал easy_install paste, тогда ошибка распределения разрешена, но python main.py все еще не может работать.Помогите!

На самом деле это расстраивает.Я продолжаю задаваться вопросом, почему в aws, gcloud и лазурных облаках не было учебника по пирамиде, в то время как фляга и django все там.Сообщество также не имеет рабочего руководства для этих облачных сервисов.Будучи новичком, я думаю, что с пирамидой что-то не так.

1 Ответ

0 голосов
/ 23 ноября 2018

Кажется, что этот урок по пирамиде устарел.Также я думаю, что это сделано для работы со стандартом App Engine, так как команда dev_appserver.py не работает с гибкой средой (обратите внимание на тег env: flex в файле app.yaml).

Кроме тогоМне удалось заставить пирамиду работать в App Engine Standard, как и в приложении Flask, следуя этой документации по пирамиде :

Обратите внимание на строку, где вы конфигурируете сервер, если вы используетеВ этом направлении и порту (127.0.0.1:8080) вы сможете просматривать веб-страницу из предварительного просмотра облачной оболочки «локально».

Файл main.py :

from wsgiref.simple_server import make_server
from pyramid.config import Configurator
from pyramid.response import Response


def hello_world(request):
    return Response('Hello World!')

def bye_world(request):
    return Response('Bye!')

config = Configurator()

config.add_route('hello', '/')
config.add_view(hello_world, route_name='hello')

config.add_route('newHandler', '/bye')
config.add_view(bye_world, route_name='newHandler')

app = config.make_wsgi_app()

if __name__ == '__main__':
    server = make_server('127.0.0.1', 8080, app)
    server.serve_forever()

app.yaml :

runtime: python27
api_version: 1
service: default
threadsafe: yes

handlers:
- url: /.*
  script: main.app

По мере использованиясторонние библиотеки (пирамиды) вам необходимо указать их .Сначала создайте файл needs.txt и введите следующие строки:

pyramid
repoze.lru

(библиотека repoze.lru представляется требованием к пирамиде)

Создайте каталог с помощьюCLI (в данном примере с именем lib), расположенный по тому же пути, что и остальные файлы, и установите библиотеки:

mkdir lib 
pip install -t lib -r requirements.txt

Эта команда установит все библиотеки, перечисленные в файле 'needs.txt'.файл и скопируйте их в папку 'lib'.

Теперь создайте файл с именем appengine_config.py , который будет направлять развертывание App Engine для загрузки библиотек в папку 'lib', ивведите:

from google.appengine.ext import vendor

vendor.add('lib')

В качестве примечания вам не нужно делать это с Flask, поскольку это встроенная библиотека в App Engine, поэтому вам не нужно специально загружать библиотеку.

Наконец, чтобы протестировать приложение «локально» в Cloud Shell, вы можете запустить его в своем CLI:

python main.py

И затем использовать функцию предварительного просмотра в Cloud Shell.

Для развертывания приложенияиз вашего CLI:

gcloud app deploy

И просмотрите его в браузере с помощью команды:

gcloud app browse -s <service_name_defined_in_app.yaml>

В этом примере эта команда будет

gcloud app browse -s default
...