如何设置云 运行 应用程序以接收 python 中的 pub/sub 消息?

How to setup a cloud run app to receive pub/sub messages in python?

我是 google 云平台的新手,我正在尝试设置一个 python 脚本来每天从外部 API 提取数据并存储BigQuery 中的数据。我已经设置了脚本,经过大量研究并在 Whosebug 上提出问题后,我设法将其作为烧瓶应用程序部署在 google 云 运行 上。

基本上,这意味着我创建了两个文件 - 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 对话。我正在查看 google 的文档,但我仍然没有弄明白。问题是我是一名数据分析师,flask 和 pub/sub 在专业知识方面都超出了我的水平。

非常感谢您的帮助,要么向我展示如何设置脚本以与 pub/sub 对话,要么向我指出有答案的来源。

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

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

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