FAIL_TO_RETRIEVE_UPDATE 错误(Creatives V2 API)
FAIL_TO_RETRIEVE_UPDATE error (Creatives V2 API)
我在 post 通过 LinkedIn API 投放创意时遇到了一些问题。
这纯粹是针对 LinkedIn 工程师的问题,因为我确定这不是代码问题。该问题似乎是在批量 post 广告活动与相关广告素材期间发生的。使用 Thread.Sleep
/ await Task.Delay
方法和同步 运行 没有帮助。该错误根本不是描述性的,但我已经划掉了错误的请求和代码错误的原因。这绝对是一个 API 问题。我想更深入地了解我可以对服务器进行的调用次数以及我可以进行这些调用的频率,但它似乎也与此无关。我尝试调试并等待 10-20 秒,然后 post 开始制作广告素材。
我通过 API 所做的事情如下:
- 发布多个分享,
- 发布多个活动,
- 发布多个广告素材(将相关的 Share urn 和 Campaign urn 关联到它)
让我补充一点,我已经确定当我尝试 post 广告时,它确实具有引用的共享 ID 和引用的广告系列的 ID。
错误信息:
{"message":"Validation failed because [{reason=FAIL_TO_RETRIEVE_UPDATE, field=reference, batchIndex=0, type=REMOTE_OPERATION_FAILED, message=Fail to retrieve update. Could be a temporary failure. Reference , parameters={value=, key=}}]","status":400}
同时,请查看以下解决此问题的方法:
我已经引入了一些重试逻辑和 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)}.");
}
}
我在 post 通过 LinkedIn API 投放创意时遇到了一些问题。
这纯粹是针对 LinkedIn 工程师的问题,因为我确定这不是代码问题。该问题似乎是在批量 post 广告活动与相关广告素材期间发生的。使用 Thread.Sleep
/ await Task.Delay
方法和同步 运行 没有帮助。该错误根本不是描述性的,但我已经划掉了错误的请求和代码错误的原因。这绝对是一个 API 问题。我想更深入地了解我可以对服务器进行的调用次数以及我可以进行这些调用的频率,但它似乎也与此无关。我尝试调试并等待 10-20 秒,然后 post 开始制作广告素材。
我通过 API 所做的事情如下:
- 发布多个分享,
- 发布多个活动,
- 发布多个广告素材(将相关的 Share urn 和 Campaign urn 关联到它)
让我补充一点,我已经确定当我尝试 post 广告时,它确实具有引用的共享 ID 和引用的广告系列的 ID。
错误信息:
{"message":"Validation failed because [{reason=FAIL_TO_RETRIEVE_UPDATE, field=reference, batchIndex=0, type=REMOTE_OPERATION_FAILED, message=Fail to retrieve update. Could be a temporary failure. Reference , parameters={value=, key=}}]","status":400}
同时,请查看以下解决此问题的方法:
我已经引入了一些重试逻辑和 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)}.");
}
}