Python 云函数在 GCP 中一次又一次重启***编辑:可能由未确认的 pub/sub 驱动,如何在代码中直接确认

问题描述 投票:0回答:1

*** 编辑:看起来问题可能来自 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

python google-cloud-platform google-cloud-functions shopify
1个回答
0
投票

所以,显然,1/ 我的 python 云函数花了 10 多分钟才返回 1, 2/ 超过了最大确认时间。

解决方法: a/ 返回 1, 200 而不是 1。会解决确认问题,但不会解决时序问题 b/ 在同一个 pub/sub 主题上创建另一个云函数,立即返回 1, 200,因此消息确实得到确认,并且其他函数每 10 分钟停止重新运行

© www.soinside.com 2019 - 2024. All rights reserved.