我的 Flask 服务器设置如下:
from flask import Flask
import shopify
app = Flask(__name__)
# Setup ShopifyAPI
private_app_password = os.getenv("SHOPIFY_API_KEY")
shop_url = os.getenv("shop_url")
api_version = "2024-07"
shopify_session = shopify.Session(shop_url, api_version, private_app_password)
shopify.ShopifyResource.activate_session(shopify_session)
@app.route("/", methods=["POST"])
def index():
shopify.Orders.find("id"=id)
上面的代码不起作用并返回身份验证错误。我尝试发现,当我将设置代码的第 4 + 5 行移动到 index() 内时,它可以工作。但我无法理解为什么会出现这种情况。更具体地说,我不明白为什么 pirvate_app_password 和 shop_url 在索引中可见,而 shopify_session 则不可见。
有效的代码:
from flask import Flask
import shopify
app = Flask(__name__)
# Setup ShopifyAPI
private_app_password = os.getenv("SHOPIFY_API_KEY")
shop_url = os.getenv("shop_url")
api_version = "2024-07"
@app.route("/", methods=["POST"])
def index():
shopify_session = shopify.Session(shop_url, api_version, private_app_password)
shopify.ShopifyResource.activate_session(shopify_session)
shopify.Orders.find("id"=id)
跟
app = Flask(__name__)
之前代码是否执行有关系吗?
我已将 2 行代码移至索引函数中,并且它有效。但由于我对flask或python的理解存在差距,无法找出其背后的原因?
出现此问题是因为 Flask 的生命周期。因此,在您的初始代码中,您在应用程序启动时仅创建一次 Shopify 会话,但是 Shopify 在每次请求时都需要活动会话,因此会话可能会在发出请求时过期。