【问题标题】:How to setup a cloud run app to receive pub/sub messages in python?如何设置云运行应用程序以在 python 中接收发布/订阅消息?
【发布时间】:2020-08-25 11:07:45
【问题描述】:

我对谷歌云平台相当陌生,我正在尝试设置一个 python 脚本来从外部 API 提取日常数据并将数据存储在 BigQuery 中。我已经完成了脚本设置,并且在对 StackOverflow 进行了大量研究和提问之后,我设法将它部署在 google cloud run 作为烧瓶应用程序。

基本上,这意味着我创建了两个文件 - main.pyDockerfilemain.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


【解决方案1】:

您可以设置调用 HTTP URL 的 Cloud Scheduler。将您的 Cloud Run url 放入 Cloud Scheduler 和正确的频率。 PubSub 在这里没用!

  • 0 1 * * * 例如,每天凌晨 1 点
  • 0 1 * * 1-5 例如每个工作日(周一至周五)凌晨 1 点

如果您的 Cloud Run 部署为私有模式(不允许未经身份验证的模式),请告诉我,这需要额外配置。

【讨论】:

    猜你喜欢
    • 2021-10-30
    • 2021-02-27
    • 1970-01-01
    • 2013-11-22
    • 1970-01-01
    • 2021-02-01
    • 1970-01-01
    • 2021-05-27
    • 1970-01-01
    相关资源
    最近更新 更多