在Google控制台中,我正在创建一个主题并将其发布,并且运行正常。现在,我想从一个Python脚本中完成此操作,但是我不知道将这些文件放在Google Pub / Sub中的位置。
有人可以教我如何使用脚本来完成它吗?我是新来的,我是学生。我从未使用过Google Pub / Sub。我只想制作一些随机数据,然后将其发送到Pub / Sub。
有人告诉我,我需要网络托管来运行这些脚本,对吗?请指导我简单。我已经阅读了三天的文档,现在所有事情都变得一团糟。预先谢谢你。
答案 0 :(得分:1)
您需要遵循的唯一文档是Pub/Sub quickstart。您需要的“网络托管”是一个GCP项目,
您可以从GCP Cloud Shell本身进行此快速入门,并使用nano
或vim
创建文件。只需记住在脚本中设置project_id
,topic_name
和subscription_name
。
答案 1 :(得分:1)
正如Guillermo Cacheda正确指出的,您需要的只是PUB / SUB快速入门。
但是,首先,您将需要一个部署在GCP(Google云平台)上的项目。 假设您有一个项目,并且知道project_ID。 您需要使用pip安装google-cloud-pubsub。
/ 确保您正在按照python开发者设置指南中的说明使用virtualenv /
pip install --upgrade google-cloud-pubsub
/ 创建一个可以发布或订阅的主题。 /
gcloud pubsub topics create my-topic
/ 发布消息 /
from google.cloud import pubsub_v1
/ TODO project_id =“您的Google Cloud Project ID” TODO topic_name =“您的发布/订阅主题名称” /
publisher = pubsub_v1.PublisherClient()
/ topic_path
方法创建一个完全限定的标识符
格式为projects/{project_id}/topics/{topic_name}
/
topic_path = publisher.topic_path(project_id, topic_name)
for n in range(1, 10):
data = u"Message number {}".format(n)
# Data must be a bytestring
data = data.encode("utf-8")
# When you publish a message, the client returns a future.
future = publisher.publish(topic_path, data=data)
print(future.result())
print("Published messages.")
/ 接收消息 /
from google.cloud import pubsub_v1
/ TODO project_id =“您的Google Cloud Project ID”,TODO subscription_name =“您的发布/订阅订阅名称”,TODO超时= 5.0#“订户应在几秒钟内收听消息多长时间” /
subscriber = pubsub_v1.SubscriberClient()
/ subscription_path
方法创建一个完全限定的标识符
格式为projects/{project_id}/subscriptions/{subscription_name}
/
subscription_path = subscriber.subscription_path(
project_id, subscription_name
)
def callback(message):
print("Received message: {}".format(message))
message.ack()
streaming_pull_future = subscriber.subscribe(
subscription_path, callback=callback
)
print("Listening for messages on {}..\n".format(subscription_path))
如果未设置timeout
,将来/ result()将无限期阻塞, 除非首先遇到异常。 / 尝试: stream_pull_future.result(timeout = timeout) 除: streaming_pull_future.cancel()
/ 最后,为避免对您的GCP帐户收取资源费用,请使用以下命令删除主题和订阅 /
gcloud pubsub subscriptions delete my-sub
gcloud pubsub topics delete my-topic
/ 请注意,以上代码来自GCP文档python的Quickstart-client-libraries。 /