对于这么长的详细问题表示歉意。开始...
该文件的名称为 send_daily_report.py 并使用一些库,这些库在requirements.txt 文件中详细介绍。
My app.yaml看起来如下:
runtime: python27
threadsafe: false
handlers:
- url: /send_daily_report
script: send_daily_report.py
libraries:
- name: ssl
version: latest
My cron.yaml看起来如下:
cron:
- description: "Send unsent subscriptions to Glocell rewards every 1 minute"
url: /send_daily_report
schedule: every 1 day from 00:00
最后我的要求.txt有以下内容:
Babel==2.5.3
cachetools==3.1.0
certifi==2017.11.5
chardet==3.0.4
coloredlogs==8.0
colorlog==3.1.0
et-xmlfile==1.0.1
google-api-core==1.10.0
google-auth==1.6.3
google-cloud-core==0.29.1
google-cloud-storage==1.15.0
google-resumable-media==0.3.2
googleapis-common-protos==1.5.10
humanfriendly==4.6
idna==2.6
jdcal==1.3
money==1.3.0
mysql-connector-python==8.0.5
mysqlclient==1.3.12
numpy==1.16.3
openpyxl==2.5.0
pandas==0.24.2
protobuf==3.7.1
pyasn1==0.4.5
pyasn1-modules==0.2.5
python-dateutil==2.8.0
python-magic==0.4.15
pytz==2017.3
requests==2.18.4
rsa==4.0
six==1.12.0
urllib3==1.22
当我做一个:
gcloud 应用部署 app.yaml cron.yaml
它似乎忽略了我的requirements.txt并且不安装依赖项。我什至在 gcloud 开发服务器中运行了它(dev_appserver.py https://cloud.google.com/appengine/docs/standard/python/tools/using-local-server./app.yaml --enable_console) 在本地,当我使用开发服务器控制台尝试导入库时,这些库肯定没有安装。
然后我尝试使用Python 3.7。它实际上将库安装在requirements.txt中,但问题出在处理程序中的app.yaml中,我无法指定脚本名称。对于 python 3.7,该值始终设置为 auto,按照gcloud app.yaml 参考 https://cloud.google.com/appengine/docs/standard/python3/config/appref.
我需要做什么才能在 gcloud app engine cron 中执行我的脚本。在 Linux 系统上,这将是 crontab 中的简单 cronjob 设置,如下所示:
0 0 * * * python /send_daily_py
从我读到的有关 Python 3.7 的内容来看,我似乎需要 django 或 flex 来处理请求并路由它们来执行我的自定义 .py 脚本,这似乎有点矫枉过正,这样我就可以执行一个脚本。当然有办法解决这个问题吗?我什至尝试将这些库包含在我的应用程序文件夹中的子文件夹中,如下所示:
pip install --upgrade -r requests.txt -t ./lib
然后我添加了init.py 在 lib 中,然后我更改了所有导入以使用
导入 lib.name_of_library
这不起作用,因为这些库随后无法导入它们需要的子包。
**
嘿嘿!
**