2017-03-02 89 views
1

我在搞清楚如何在谷歌云平台上部署我的脚本。 我已经创建了一个目录或文件夹,其中包含script.py/lib文件夹中的所有库。在谷歌云平台上部署python脚本

什么,我不明白是建立我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内置的,因为我不能使用点安装它们。

即时通过使用Windows 10。

的app.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 

回答

2

脚本行的Handlers element表:

一个脚本:指令必须是一个Python导入路径,例如, package.module.app指向一个WSGI应用。一个脚本的最后一个组件:使用Python模块路径指令是 模块中的全局变量的名称:变量必须是 WSGI应用程序,通常被称为应用按照约定。

注:就像对一个Python 进口声明,每个子目录 这是一个包必须包含一个名为__init__.py

我建议你花一些时间,通过代码片段会从Quickstart for Python App Engine Standard Environment文件,在那里你会看到一个简单的应用程序的基本结构。

一个requirements.txt文件可以用来指定要安装在lib目录包的列表,像这样:

pip install -r requirements.txt -t lib

但它不是绝对必要,包可以明确直接规定在pip cmdline也是如此。

+0

我可以在'app.yaml'中设置何时运行代码?例如每24小时一次的应用程序就会运行代码。 – Boneyflesh

+0

哦,男孩,继承人另一个术语,我偶然发现了'cron.yaml'。任何想法添加'X-Appengine-Cron:true'或者我做错了什么? – Boneyflesh

+0

在文档站点上花一些时间,您需要首先获取轴承。查看左侧导航栏,您将找到关于操作指南,概念,教程,参考等的文章。对于cron,请先https://cloud.google.com/appengine/docs/standard/python/config/cron –