*** 编辑:看起来问题可能来自 Pub/sub 云调度程序...知道如何防止它在 10 分钟后重新发送消息吗?我在调度程序选项中找不到设置***
*** 编辑 2:好的,pub/sub 云调度程序在 10 分钟后从未收到确认。大问题:是否有任何代码可以在首次发送 pub/sub 后立即发送确认/确认消息,这样我们就不必再担心它了? ***
我在 GCP 中编写了第二代云函数,用于对 Shopify 执行一些 POST 调用(基本上是更新股票)。
该功能运行良好,我已经
time.sleep
不要向 Shopify 发送太多呼叫。
事情是,它运行,然后 10 分钟后,再次开始运行,我不明白为什么,因为它应该停止。
它由云调度程序触发,每天晚上一次,位于 Europe West 3 法兰克福。我已将实例设置为默认值,无需重试(调度程序上也无需重试),只需将 3600 秒放入我的函数即可。
有人知道这里会发生什么吗?我已经查看了文档和数千个问题,但我无法找到相关的问题。我已将
return
1 添加到所有 def
,将 time.sleep
添加到帖子以避免错误,确保它在 10 分钟内运行,输入 3600 秒?
这是我编写的代码的虚拟:
import requests
import pandas as pd
from google.cloud import storage
import time
import json
from google.cloud import bigquery
def stock_to_shopify():
client=bigquery.Client()
query= """
SELECT * FROM `XXX.YYY.ZZZ` ORDER BY 1,2,3 LIMIT 400
"""
query_job = client.query(query)
headers = {
'X-Shopify-Access-Token': 'XXX',
'Content-Type': 'application/json',
}
for stock_to_shopify in query_job:
json_data = {
'location_id': stock_to_shopify[0],
'inventory_item_id': stock_to_shopify[1],
'available': stock_to_shopify[2],
}
response = requests.post(
'https://XXX.myshopify.com/admin/api/2024-04/inventory_levels/set.json',
headers=headers,
json=json_data,
)
time.sleep(1)
print(response.text)
return 1
def main(data,context):
stock_to_shopify()
print("run ok")
return 1
大师
使用实例编号,但恢复为默认值
为我的函数添加了 3600 秒的运行时间
在所有
return 1
上添加了
def
所以,显然,1/ 我的 python 云函数花了 10 多分钟才返回 1, 2/ 超过了最大确认时间。
解决方法: a/ 返回 1, 200 而不是 1。会解决确认问题,但不会解决时序问题 b/ 在同一个 pub/sub 主题上创建另一个云函数,立即返回 1, 200,因此消息确实得到确认,并且其他函数每 10 分钟停止重新运行