Извинения за длинный подробный вопрос. Здесь идет ...
Файл имеет имя send_daily_report.py и использует некоторые библиотеки, которые подробно описаны в файле require.txt.
Мой 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
И, наконец, мои needs.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 deploy app.yaml cron.yaml
кажется, что он игнорирует мой файл require.txt и не устанавливает зависимого. Я даже запускал его на сервере gcloud dev ( dev_appserver.py ./app.yaml --enable_console) локально, и библиотеки определенно не устанавливаются, когда я использую консоль dev-сервера, чтобы попытаться импортировать их.
Затем я попытался использовать Python 3.7. который на самом деле устанавливает библиотеки в файл require.txt, но проблема в app.yaml в обработчиках, я не могу указать имя скрипта. Для python 3.7 это значение всегда устанавливается на auto в соответствии с gcloud app.yaml, ссылка .
Что мне нужно сделать, чтобы выполнить мой скрипт в gcloud app engine cron. В системе Linux это была бы простая установка cronjob в crontab следующим образом:
0 0 * * * python / send_daily_py
Из того, что я читаю о Python 3.7, мне кажется, что мне нужен django или flex для обработки запросов и маршрутизации их для выполнения моего собственного сценария .py, который кажется излишним, чтобы я мог выполнить один сценарий. Неужели есть способ обойти это? Я даже попытался включить библиотеки в подпапку в папке приложения следующим образом:
pip install --upgrade -r needs.txt -t ./lib
Затем я добавил init .py в lib, а затем я изменил весь свой импорт на использование
импорт lib.name_of_library
Что не сработало, поскольку эти библиотеки впоследствии не могли импортировать необходимые им подпакеты.
**
Heeeeelp!
**