Разверните скрипт Python на облачной платформе Google

Я выясняю, как развернуть свой скрипт на облачной платформе Google. Я уже создал каталог или папку, содержащую script.pyи все библиотеки в папке /lib.

чего я не получаю, так это настройки моего app.yaml для запуска script.py (python 2.7) и доступа к lib, если это необходимо.

Я также не знаю, нужно ли мне делать requirments.txt, так как я использую сторонние библиотеки.

вот весь мой импорт внутри script.py

import requests
import re
import mysql.connector
from urlparse import urlparse
from urlparse import urljoin
from bs4 import BeautifulSoup

Кроме того, в моем lib есть BeautifulSoup, запросы и mysql.connector. я не знаю о других, я предполагаю, что они встроены в python2.7, так как я не могу установить их с помощью pip.

Я использую Windows 10, кстати.

приложение.yaml

runtime: python27
api_version: 1
threadsafe: true



handlers:
- url: /lib/requests
  script: Scrape.app

handlers:
- url: /requests
  script: Scrape.app

handlers:
- url: /mysql/connector
  script: Scrape.app

handlers:
- url: /bs4/
  script: Scrape.app

cron.yaml

cron:
- description: "Scrape"
  url: /
  schedule: every 10 mins
  retry_parameters:
    min_backoff_seconds: 2.5
    max_doublings: 10

я получаю ошибки, как

Updating service [default]...failed.                                                                                                                                                                                                          
ERROR: (gcloud.app.deploy) Error Response: [9] 
Application startup error:
/bin/sh: 1: Python: not found

Traceback (most recent call last):
 File  "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 240, in Handle
handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
  File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 299, in _LoadHandler
handler, path, err = LoadObject(self._handler)
  File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/runtime/wsgi.py", line 85, in LoadObject
obj = __import__(path[0])
  File "/base/data/home/apps/s~tribal-bonito-157700/20170302t182530.399552845921654287/Scrape.py", line 3, in <module>
import requests
ImportError: No module named requests

person Boneyflesh    schedule 02.03.2017    source источник


Ответы (1)


Из строки script в обработчики элемент таблицы:

Директива script: должна быть путем импорта Python, например, package.module.app, который указывает на приложение WSGI. Последним компонентом директивы script:, использующей путь модуля Python, является имя глобальной переменной в модуле: эта переменная должна быть приложением WSGI и обычно называется приложение по соглашению.

Примечание. Как и в случае с оператором import Python, каждый подкаталог, являющийся пакетом, должен содержать файл с именем __init__.py

Я рекомендую потратить некоторое время на изучение фрагментов кода из Quickstart for Python App Engine Standard Environment., где вы увидите базовую структуру простого приложения.

Файл requirements.txt можно использовать для указания списка пакетов, которые необходимо установить в каталог lib, например:

pip install -r requirements.txt -t lib

Но это не абсолютно необходимо, пакеты также могут быть явно указаны непосредственно в командной строке pip.

person Dan Cornilescu    schedule 02.03.2017
comment
Могу ли я установить в app.yaml, когда запускать код? например, каждые 24 часа приложение будет запускать код. - person Boneyflesh; 02.03.2017
comment
о боже, вот еще один термин, на который я наткнулся cron.yaml. есть идеи, куда добавить X-Appengine-Cron: true или я делаю это неправильно? - person Boneyflesh; 02.03.2017
comment
Потратьте некоторое время на сайт документации, вам нужно сначала сориентироваться. Проверьте панель навигации слева, вы найдете статьи с практическими руководствами, концепциями, учебными пособиями, справочниками и т. д. Для cron начните с cloud.google.com/appengine/docs/standard/python/config/cron - person Dan Cornilescu; 02.03.2017