2017-03-02 133 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 –