首页 > 编程问答 >Ebay Python SDK 仅在特定项目类别上返回错误

Ebay Python SDK 仅在特定项目类别上返回错误

时间:2024-07-27 05:12:40浏览次数:9  
标签:python xml ebay-api ebay-sdk

我在一个项目中使用 ebay SDK 一段时间了。

最近我尝试导入一些商品,例如手表、手机壳等...并且我使用了 eBay 自己通过 eBay 返回的英国商店页面上的类别 ID他们的“get_category_suggestions”API端点,但eBay似乎有选择地决定拒绝某些项目并引发服务器错误!

为了测试,我做了一个测试固定项目上传函数,如下所示,并带有示例函数调用:

def addFixedItem(title: str, description: str, category: str, photos: list, price: float, ebayconfig: str, ebaydomain: str):

    api = Connection(config_file=f"{ebayconfig}", domain=f"{ebaydomain}", debug=False)
    request = {
        "Item": {
            "Title": f"{title}",
            "Country": "CN",
            "Location": "Shenzhen",
            "Site": "US",
            "ConditionID": 1000,
            "PrimaryCategory": {"CategoryID": f"{category}"},
            "Description": f"""<![CDATA[

            {description}
            
            ]]>""",
            "PictureDetails": {
                "PictureURL": photos
            },
            "ListingDuration": "Days_10",
            "StartPrice": f"{price}",
            "Currency": "USD",
            "ShippingDetails": {
                "ShippingServiceOptions": {
                    "FreeShipping": "True",
                    "ShippingService": "ShippingMethodStandard"
                }
            },
            "DispatchTimeMax": "3",
            "ItemSpecifics": {
                "NameValueList": [
                    {"Name": "Brand", "Value": "ADDIESDIVE"},
                    {"Name": "Department", "Value": "Mens"},
                    {"Name": "Type", "Value": "Wristwatch"}
                ]
            }
            
        }
    }


    api.execute("AddFixedPriceItem", request)
    print(api.response_json())


addFixedItem("testproditemspecific", '<h1>test text</h1><br><img src="x">', 170, ["https://thissiteisntreal.svg", ], 150, "ebay.yaml", "api.sandbox.ebay.com")

调用时这个函数的键盘类别 ID 为 170,它导入得非常好,如下所示

概念验证工作

但是如果我使用手表的建议类别 ID 导入它:31387

我收到错误-> AddFixedPriceItem: Class: RequestError, Severity: Error, Code: 10007, System error. System error. Unable to process your request. Please try again later.'

这应该是服务器端错误,但显然不是我可以控制的,何时发生和不发生

这是一个超级奇怪的问题,我想在这里记录它,以及与人们合作尝试解决它


遇到的问题很有趣,而且答案可能比仅仅是 eBay 服务器端问题更复杂。让我们分解一下可能的原因以及我们如何解决这些问题。

可能原因和解决方案

  1. 类别特定要求: 正如所怀疑的那样,某些 eBay 类别比其他类别有更严格的规则和要求。手表就是一个很好的例子,因为它通常需要特定的产品标识符(例如,UPC、EAN、ISBN)或其他与品牌、型号和材料相关的属性。

  2. 要做什么:

    • 仔细查看 eBay 文档: 仔细查看 https://developer.ebay.com/devzone/xml/docs/reference/ebay/ 中有关类别 31387(手表)的特定 listing 要求。
    • 比较工作列表: 在 eBay 上查找属于类别 31387 的成功列表,并将其与尝试提交的内容进行比较。请注意所有额外的字段或差异。
    • 使用“GetCategorySpecifics”: 使用 eBay Trading API 的“GetCategorySpecifics”调用检索类别 31387 的所有必需和推荐的项目属性。这将告诉需要提供哪些其他数据。
  3. ItemSpecifics 问题: 在“ItemSpecifics”部分中包含的“NameValueList”可能与所选类别不完全兼容或格式不正确。

  4. 要做什么:

    • 验证 NameValueList: 确保“Department”、“Type”和“Brand”的所有值都对类别 31387 有效。再次,“GetCategorySpecifics”调用将对此有所帮助。
    • 检查格式: 验证“ItemSpecifics”的整体格式是否符合 eBay API 文档中的预期结构。即使是微小的差异也会导致问题。
  5. 沙盒与生产环境: 请记住,在 eBay 沙盒中测试。虽然沙盒对于实验非常有用,但它的行为有时可能与生产环境略有不同。

  6. 要做什么:

    • 测试生产环境(谨慎): 在对的生产 eBay 帐户进行任何更改之前,请确保已准备好处理潜在的列表问题或错误。仔细检查生产环境中的类别要求,因为它们可能与沙盒略有不同。
  7. 速率限制和 eBay API 问题: eBay 有速率限制,以防止他们的系统过载。如果在短时间内发出太多请求,可能会遇到错误。此外,eBay 的 API 有时可能会遇到临时中断或技术困难。

  8. 要做什么:

    • 处理速率限制: 在的代码中实现错误处理和指数退避。如果收到速率限制错误,请等待一段时间,然后重试请求。
    • 检查 eBay API 状态: 访问 eBay 开发者门户以查看是否有任何已知的 API 中断或问题报告。

调试步骤

  1. 启用调试日志记录: 在的 eBay SDK 配置中启用详细的调试日志记录。这将提供有关 API 请求和响应的更多信息,从而帮助确定问题的根源。

  2. 隔离问题: 创建一个最小化的测试用例,仅包含提交到类别 31387 所需的基本信息。这将有助于排除其他因素,例如代码的其他部分中的问题。

  3. 联系 eBay 支持: 如果排除了所有其他原因并且仍然遇到问题,请务必联系 eBay 开发者支持以获取帮助。向他们提供有关遇到的错误、正在使用的 API 调用以及已采取的任何调试步骤的具体详细信息。

请记住,在处理任何 API 时,耐心和系统调试是关键! 祝你好运,我希望这有帮助!

标签:python,xml,ebay-api,ebay-sdk
From: 78794216

相关文章

  • 使用特定的Python版本(MacOS)制作virtualenv
    我安装了brew,python3(默认和最新版本)和pip3,pyenv。TensorFlow现在不支持python3.7,所以我听说我应该制作一个独立运行3.6或更低版本的virtualenv。我安装了python3.6.7bypyenvinstall3.6.7但无法制作virtualenv-p3.6.7(mydir)因为3.6.7不在P......
  • 使用Python去除图像中的线条
    我正在尝试使用Python和cv2、numpy、skimage等从黑白图像中删除“阴影线”(如果图像中存在“阴影线”)。本质上,我的图像可以有1或2条曲线,如下例所示。但每条线都有一条1-5像素外的阴影线,需要删除。我怎样才能在Python中做到这一点?原始......
  • Python 和 OpenCV:如何裁剪半成形边界框
    我有一个为无网格表创建网格线的脚本:脚本之前:脚本之后:是否有一种简单的方法,使用OpenCV来裁剪“脚本之后”图像,使其仅包含四边边界框?示例输出:编辑:我目前正在研究一种解决方案,该解决方案可以找到垂直/水平方向的第一条/最后一条......
  • 使用类型提示将 Python 转换为 Cython
    类型提示现在在Python3.5版本中可用。在规范(PEP484)中,目标(和非目标)被明确暴露:#RationaleandGoals此PEP旨在为类型注释提供标准语法,开放Python代码更容易静态分析和重构、潜在的运行时类型检查以及(也许在某些情况下)利用类型信息生成代码。......
  • 在 Python 类型提示中区分 PySpark 和 Pandas DataFrame (PyCharm)
    在PyCharm中,如果使用apyspark.sql.DataFrame代替pandas.DataFrame,类型提示似乎不会触发警告,反之亦然。例如以下代码根本不会生成任何警告:frompyspark.sqlimportDataFrameasSparkDataFramefrompandasimportDataFrameasPandasDataFramedef......
  • 如何在Python中继承类型提示?
    所以我的问题是,当我有一个A类型的类来做事情并且我使用这些函数作为subclass(B)时,它们仍然是类A的类型,并且不接受我的类B对象作为参数或作为函数签名。我的问题简化了:fromtypingimportTypeVar,Generic,CallableT=TypeVar('T'......
  • Python - 如何传递类对象的函数参数类型(打字)
    我想python3.7附带了(不确定),不仅可以将变量名传递给函数,还可以传递变量的类型。我想知道的是是否有可能传递特定类的类型。以同样的方式传递:deffoo_func(i:int)->None:pass如果我有一个类,让我们说:classfoo_class(object):pass我如何转换fo......
  • 使用 Python 构建简单 REST API
    使用Python构建简单RESTAPI1.概述本技术文档旨在指导开发者使用Python框架Flask构建一个基本的RESTAPI。通过学习本指南,您将掌握创建、读取、更新和删除(CRUD)操作的基本知识,并能够使用Python构建自己的API。2.安装依赖首先,您需要确保已安装Python和Flask......
  • Python——Pandas(第二讲)
    文章目录变量类型的转换Pandas支持的数据类型在不同数据类型间转换建立索引新建数据框时建立索引读入数据时建立索引指定某列为索引列将索引还原变量列引用和修改索引引用索引修改索引修改索引名修改索引值更新索引Series的索引和切片DataFrame的索引和切片选择列按......
  • 基于Python+Django的红色文化研学网站设计与实现
    ......