我正在使用Django REST Framework在Google App Engine上部署,我的requirements.txt文件如下:
asn1crypto==0.24.0
astroid==2.1.0
boto3==1.9.55
botocore==1.12.55
certifi==2018.8.13
cffi==1.11.5
chardet==3.0.4
colorama==0.4.1
coreapi==2.3.3
coreschema==0.0.4
cryptography==2.4.2
defusedxml==0.5.0
Django==2.1
django-allauth==0.36.0
django-filter==2.0.0
django-rest-auth==0.9.3
django-rest-swagger==2.0.7
djangorestframework==3.8.2
djangorestframework-jwt==1.11.0
docutils==0.14
idna==2.7
isort==4.3.4
itypes==1.1.0
Jinja2==2.10
jmespath==0.9.3
lazy-object-proxy==1.3.1
lxml==4.2.5
MarkupSafe==1.0
mccabe==0.6.1
oauthlib==2.1.0
openapi-codec==1.3.2
Pillow==5.3.0
pycparser==2.19
PyJWT==1.6.4
pylint==2.2.2
PyMySQL==0.9.2
python-dateutil==2.7.5
python-social-auth==0.3.6
python3-openid==3.1.0
pytz==2018.5
requests==2.19.1
requests-oauthlib==1.0.0
s3transfer==0.1.13
simplejson==3.16.0
six==1.11.0
social-auth-app-django==3.1.0
social-auth-core==2.0.0
typed-ast==1.1.0
uritemplate==3.0.0
urllib3==1.23
virtualenv==16.0.0
wrapt==1.10.11
Run Code Online (Sandbox Code Playgroud)
这是我的app.yaml文件,我的项目在本地pip venv上正常运行:
# [START django_app]
runtime: python37
handlers:
# This configures Google App Engine to serve the files in …Run Code Online (Sandbox Code Playgroud) 在app.yaml中指定
instance_class:F2 automatic_scaling:min_idle_instances:5 max_idle_instances:automatic
他们是否可以从开发者控制台检查实例层/类?
只能从计费状态猜测实例类,每小时成本为0.05美元,即F1实例类.
我在App Engine(灵活的环境)上有一个应用程序,并配置了一些cron作业。这些作业应花费几分钟,但我看到它们在约30秒后失败(502错误)。关于cron作业的最大时间(使用cron.yaml调度作业),尽管看起来“由cron调用的HTTP请求最多可以运行24小时”,但该文档不是很清楚。
关于如何克服这一点的任何想法?提前致谢
我是GAE的新手,在做一门课程时,我需要在我的系统上安装它.我按照GAE网站上的说明操作,并成功安装在我的Ubuntu 17.04系统上.现在,我创建了一个文件夹,其中first-app包含文件first-app.py和名称app.yaml.
每当我尝试运行时dev_appserver.py first-app,我都会收到以下错误:
Traceback (most recent call last):
File "/usr/bin/dev_appserver.py", line 11, in <module>
import bootstrapping.bootstrapping as bootstrapping
File "/usr/lib/google-cloud-sdk/bin/bootstrapping/bootstrapping.py", line 9, in <module>
import setup
ModuleNotFoundError: No module named 'setup'
Run Code Online (Sandbox Code Playgroud)
我安装了python 2.7和python 3.5,默认python是2.7.13.
以下是内容first-app.py:
import webapp2
class Mainpage(webapp2.RequestHandler):
def get(self):
self.response.write("Hello World")
app=webapp2.WSGIApplication([('/', Mainpage), ], debug=True)
Run Code Online (Sandbox Code Playgroud)
并且app.yaml文件的内容是:
runtime: python
api_version: 1
threadsafe: true
handlers:
- url: /
script: first-app.app
- url: /index\.html
script: home.app
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能让它发挥作用?
google-app-engine dev-appserver google-cloud-platform google-app-engine-python google-cloud-sdk
我在python 环境中使用 Google AppEngine Flexible 。现在我有两个服务:default 和 worker,它们共享相同的代码库,由app.yaml和配置worker.yaml。现在我需要安装本机 C++ 库,所以我不得不切换到自定义运行时并添加 Dockerfile。
这是gcloud beta app gen-config --custom命令生成的Dockerfile
FROM gcr.io/google-appengine/python
LABEL python_version=python3.6
RUN virtualenv --no-download /env -p python3.6
# Set virtualenv environment variables. This is equivalent to running
# source /env/bin/activate
ENV VIRTUAL_ENV /env
ENV PATH /env/bin:$PATH
ADD requirements.txt /app/
RUN pip install -r requirements.txt
ADD . /app/
CMD exec gunicorn --workers=3 --threads=3 --bind=:$PORT aces.wsgi
Run Code Online (Sandbox Code Playgroud)
以前我app.yaml和worker.yaml每个人都有自己的entrypoint:配置,指定需要运行以启动服务的命令。 …
google-app-engine docker google-app-engine-python app-engine-flexible
我之前能够使用 gcloud 命令部署应用引擎(python 3 标准环境)。但是几天前,我不小心删除了 Cloud Storage ( gs://us.artifacts.[My-App-ID].appspot.com/containers/images)下的所有图像,并且无法再将新应用程序部署到此应用程序 ID。
有什么办法可以取回容器/图像下的所有文件?谢谢!
以下是从 Cloud Build 详细信息中获取的日志:
starting build "a71fe78e-463c-43a5-a463-b7c30ce2331f"
FETCHSOURCE
BUILD
Starting Step #0 - "fetcher"
Step #0 - "fetcher": Already have image (with digest): gcr.io/cloud-builders/gcs-fetcher
Step #0 - "fetcher": 2018/09/05 03:22:49 Fetching manifest gs://staging.[My-App-ID].appspot.com/ae/357626f2-3c12-444a-bf54-cb0d488511b8/manifest.json.
Step #0 - "fetcher": 2018/09/05 03:22:49 Fetched gs://staging.[My-App-ID].appspot.com/ae/357626f2-3c12-444a-bf54-cb0d488511b8/manifest.json (3340B in 267.326596ms, 0.01MiB/s)
Step #0 - "fetcher": 2018/09/05 03:22:49 Processing 16 files.
Step #0 - "fetcher": 2018/09/05 03:22:49 Fetched gs://staging.[My-App-ID].appspot.com/ccd9f8893da70ab46e98841ee844d2cb848b4a6d (439B in 50.73556ms, 0.01MiB/s)
Step #0 …Run Code Online (Sandbox Code Playgroud) google-app-engine google-cloud-storage gcloud google-app-engine-python
我正在测试 Google App Engine 并尝试运行一个简单的函数来将文件上传到 Blobstore 或 Cloud Storage。我直接在实例的 Cloud Shell 中键入 Python 代码。当我打电话时代码失败:
from google.appengine.ext import blobstore
我得到错误代码:
Traceback (most recent call last):
File "upload_test.py", line 1, in <module>
from google.appengine.api import users
ImportError: No module named 'google.appengine'
尽管文档说:您可以使用已经安装了 git 和 Cloud SDK 的 Google Cloud Shell,但我尝试安装了一堆库:
gcloud components install app-engine-python
pip install google-cloud-datastore
pip install google-cloud-storage
pip install --upgrade google-api-python-client
我仍然遇到同样的错误。如何让 appengine 库工作?或者,这是创建允许用户上传文件的应用程序的错误方法吗?
google-app-engine google-cloud-platform google-app-engine-python
我多年来一直在使用 GAE/P 1st gen 并且正在跳到我的第一个 GAE/P 2nd gen 项目。
我正在尝试像dev_appserver.py在第一代应用程序中那样在本地运行它,但是文档在这方面非常混乱。
我可以单独运行 Flask ( python main.py) 但静态文件不起作用(因为 Flask 对 一无所知app.yaml)并且数据存储也不起作用。
GAE 文档说这dev_appserver.py应该适用于第二代(除了在 Windows 上,但我在 Mac 上)但是当我运行它时,我收到以下错误。
当我dev_appserver.py使用 Python 2 或 3运行时会发生这种情况。我还CLOUDSDK_PYTHON按照说明设置了我的 Python 2 二进制文件。
那么我到底如何才能以静态文件和数据存储工作的方式在本地运行我的 GAE/P 第二代项目?!?
$ python ~/google-cloud-sdk/bin/dev_appserver.py --application=myapp --support_datastore_emulator=False ./app.yaml
INFO 2019-02-12 00:39:21,885 devappserver2.py:278] Skipping SDK update check.
INFO 2019-02-12 00:39:23,128 api_server.py:275] Starting API server at: http://localhost:51187
INFO 2019-02-12 00:39:23,139 instance_factory.py:71] Detected Python 3.6.5
INFO …Run Code Online (Sandbox Code Playgroud) 我一直在使用 GAE 一段时间没有任何问题。唯一的变化是我添加了 Spacy 以及我训练的模型。
当我使用 dev_appserver 在本地运行时,该应用程序消耗大约 153 MB。部署后,出现内存超出错误。即使有F4_1G实例,我也超出了内存:
超过 1228 MB 的硬内存限制,总共为 0 个请求提供服务后为 1280 MB。考虑在 app.yaml 中设置更大的实例类。
如果我导入 Spacy 并且不加载我的模型(实例有大约 200MB),那么部署就可以工作,所以 Spacy 本身不是问题,但是当我用spacy.load()内存加载我的模型时,然后超出了限制。请注意,这发生在我什至使用我的 Spacy 模型之前,因此仅加载模型就会导致问题。
我的 Spacy 模型是一个标记器和解析器,在磁盘上占用 27 MB。我不明白为什么应用引擎上的内存要求会比我的 Mac 大得多。
看起来其他人已经能够在应用引擎上运行 Spacy。知道我可能做错了什么吗?
Google App-Engine 支持特定版本的请求路由,如此处所述。 例如,这对于在部署之前测试新版本很有用。然而,这也可能是有问题的。假设新版本包含安全增强功能 - 应该有一种方法可以防止访问以前的版本而不完全删除它们(例如为了允许快速回滚)。找不到禁用以前版本的方法。有没有办法做到这一点?谢谢。