取得应用程式时出现Podio错误

时间:2018-07-10 23:03:07

标签: php podio

# Create series val, val1, val3 and roll_num
val = np.random.randn(10)
val2 = np.random.randn(10)
val3= np.random.randn(10)
roll_num = np.linspace(start=1001,stop=1010,num=10)

# Create dataframe from above series
df = pd.DataFrame({'val': val, 'val2': val2, 'val3': val3, 'roll_num':roll_num})
df.head(2)

# Plot using iplot() where x-axis now shows student roll number 
df.iplot(x='roll_num', y=['val', 'val2', 'val3'], xTitle='Student Roll Number',yTitle='Score',title='Class Scores')

这似乎是Podio PHP SDK或Podio API的错误。 json_response(导致array_merge错误)为null,但是http响应为200。我无法使其定期发生,但是在运行这些调用中的30%的脚本中,它大约发生10%的时间。我可以直接从文档中直接运行GetApp调用。

我知道响应存在错误,因为我的脚本在每次重新运行时都会在不同的位置中断,具体取决于未正确从API加载哪些数据。

  

测试1:由于$ app1为空,因此在第344行出现了异常

     

测试2:第814行出现异常,因为$ app3为空

等...

这是一个未经修改的脚本,已经使用了6个月以上,但是上周某个时候停止工作。

编辑:我还确认了cURL会发生相同的错误,因此这不是特定于SDK的问题。

2 个答案:

答案 0 :(得分:2)

同样的间歇性错误也发生在我们身上。由于TLS更改已推出。

一种临时的解决方法是将调用包装在do while循环中,以便在出现错误时重试。

例如

// Get item from API
$attempts = 0;
do {
    try {
        $item = PodioItem::get($itemId);
    } catch (\Exception $e) {
        $attempts++;
        Log::error("PodioItemGetFailure #" . $attempts . ". " . $e->getMessage());
        sleep(3);
        continue;
    }
    break;
} while ($attempts < 3);

这有点令人讨厌,所以希望我们能尽快解决Podio方面的问题。

答案 1 :(得分:1)

这种间歇性错误应该不再发生了:)
除非您的网络连接不稳定或不稳定。

无论如何,最好对与网络相关的调用(例如任何Podio API调用)进行适当的处​​理。我只能建议所有Podio API调用都应通过排队机制,该机制将允许重试,以防网络不稳定或正在维护Podio(例如)。