【发布时间】:2020-08-25 11:07:45
【问题描述】:
我对谷歌云平台相当陌生,我正在尝试设置一个 python 脚本来从外部 API 提取日常数据并将数据存储在 BigQuery 中。我已经完成了脚本设置,并且在对 StackOverflow 进行了大量研究和提问之后,我设法将它部署在 google cloud run 作为烧瓶应用程序。
基本上,这意味着我创建了两个文件 - main.py 和 Dockerfile。 main.py 文件如下所示:
# Global libraries
import os
from flask import Flask
# Local libraries
import data_push
app = Flask(__name__)
@app.route('/')
def data():
return data_push.daily_data_push()
if __name__ == "__main__":
app.run(debug=True,host='0.0.0.0',port=int(os.environ.get('PORT', 8080)))
Dockerfile 看起来像这样:
# Use the official lightweight Python image.
# https://hub.docker.com/_/python
FROM python:3.6-slim
# Copy local code to the container image.
ENV APP_HOME /app
WORKDIR $APP_HOME
COPY . ./
# Install production dependencies.
RUN pip install Flask gunicorn
# Run the web service on container startup. Here we use the gunicorn
# webserver, with one worker process and 8 threads.
# For environments with multiple CPU cores, increase the number of workers
# to be equal to the cores available.
CMD exec gunicorn --bind :$PORT --workers 1 --threads 8 --timeout 0 app:app
data_push.daily_data_push() 是我需要安排的函数,以便从 API 中提取数据并将其存储在 BigQuery 中。现在,根据我正在阅读的内容,我需要首先设置应用程序以便它可以与 pub/sub 对话,然后我可以使用云调度程序设置每日计划以提取数据。
我对如何设置脚本与 pub/sub 对话有点迷茫。我正在浏览谷歌的文档,但我仍然没有弄清楚。问题是我是一名数据分析师,并且烧瓶和发布/订阅在专业方面都远远超出我的联盟。
感谢您的帮助,无论是向我展示如何设置脚本以与 pub/sub 对话,或者将我指向有答案的来源。
【问题讨论】:
-
如果我总结一下你的设计。您的 Cloud Run 应用有一个您想要触发的
/。该路径执行外部 API 调用并将结果存储到 BigQuery。这部分有问题吗?无论如何,关于触发器,您想要实现什么?周期性触发?还是消息发布到 PubSub 时的触发器? -
是的,我想设置一个定期触发器 - 每个工作日一次。函数
data_push.daily_data_push()触发我要安排的数据拉取。我应该如何设置?
标签: python-3.x google-cloud-platform google-cloud-pubsub google-cloud-run