【问题标题】:FAIL_TO_RETRIEVE_UPDATE error (Creatives V2 API)FAIL_TO_RETRIEVE_UPDATE 错误(Creatives V2 API)
【发布时间】:2019-09-25 23:16:59
【问题描述】:

我在通过 LinkedIn API 发布广告时遇到了一些问题。 这纯粹是针对 LinkedIn 工程师的问题,因为我确信这不是代码问题。该问题似乎是在批量发布具有相关创意的广告系列期间发生的。使用 Thread.Sleep / await Task.Delay 方法和同步运行没有帮助。该错误根本不是描述性的,但我已经划掉了错误请求和代码错误原因。这绝对是一个 API 问题。我想更深入地了解我可以对服务器进行的调用次数以及我可以多久进行一次,但这似乎也与此无关。我尝试调试并等待 10-20 秒,然后再发布广告素材。

我通过 API 做的事情如下:

  1. 发布多个分享,
  2. 发布多个广告系列,
  3. 发布多个广告素材(将相关的 Share urn 和 Campaign urn 关联到它)

让我补充一下,我已确保在我尝试发布广告素材时,它确实同时具有引用的共享 ID 和引用的广告系列 ID。

错误信息:

{"message":"验证失败,因为 [{reason=FAIL_TO_RETRIEVE_UPDATE, field=reference, batchIndex=0, type=REMOTE_OPERATION_FAILED, message=无法检索更新。可能是暂时失败。参考,参数={value= , 键=}}]","状态":400}

【问题讨论】:

  • 你能分享一些关于你现在在做什么的详细信息吗?例如,您能否通过 API 调用重现场景并分享它们?
  • 我正在管理多个客户的 LinkedIn 帐户,出于我的目的,我需要批量发布这些帐户(通过 Excel 电子表格)。我编写了一个基于 LinkedIn API 的微服务。我的一个应用程序是使用这个微服务来发布多个campaigs/shares/creatives。不幸的是,我不能给你任何数据来处理。您是否知道调用 Campaign/Share/Creative API 的资源级别限制是多少?
  • 另外,对于 GET/POST 请求,这些调用多久可以进行一次?
  • 另外,如果您对单个共享进行了相同的操作?
  • 什么意思?据我了解,共享可以被多个广告素材引用?

标签: api linkedin linkedin-api


【解决方案1】:

与此同时,请查看以下解决此问题的方法:

我引入了一些重试逻辑以及await Task.Delay() 方法,这似乎有点帮助,如果它因上述错误而失败,通常重试 4-5 次就足够了。

public async Task<string> PostTheContentAsync(HttpClient httpClient, object campaignManagerObject, string reqUrl, int retriesRemaining = 5)
{
    try
    {
        ByteArrayContent byteContent = CreateByteArrayContent(campaignManagerObject);
        var response = await httpClient.PostAsync(reqUrl, byteContent);
        response.EnsureSuccessStatusCode();
        IEnumerable<string> headerValue = response.Headers.GetValues("X-LinkedIn-Id");
        return headerValue.First();
    }
    catch
    {
        if (retriesRemaining > 0) //and exception is temporary
        {
            await Task.Delay(5000);
            return await PostTheContentAsync(httpClient, campaignManagerObject, reqUrl, retriesRemaining - 1);
        }
        throw new Exception($"Error while posting the content of {campaignManagerObject.GetType()} for URL: {reqUrl} in {nameof(ManagementBaseClass)}, {nameof(PostTheContentAsync)}.");
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-16
    • 1970-01-01
    • 2012-11-23
    • 2013-02-15
    • 2014-06-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多