gpt4 book ai didi

clojure - 使用 clojure twitter-api 获取 "java.io.EOFException: JSON error"

转载 作者:行者123 更新时间:2023-12-02 09:08:06 27 4
gpt4 key购买 nike

我编写了一些简单的 clojure 代码来访问 twitter 流 api。我的代码本质上与 twitter-api 文档中描述的示例代码相同:

(def ^:dynamic *custom-streaming-callback* 
(AsyncStreamingCallback. (comp println #(:text %) json/read-json #(str %2))
(comp println response-return-everything)
exception-print))

(defn start-filtering []
(statuses-filter :params {:follow 12345}
:oauth-creds *creds*
:callbacks *custom-streaming-callback*))

我正在关注有关特定用户的推文并使用 oauth 进行身份验证(未显示)。当我运行启动过滤方法并打开与 Twitter 的连接时,在一段时间内一切都运行良好,但如果流闲置一段时间(大约 30 秒),即没有关于该特定用户的推文出现,出现以下错误:

#<EOFException java.io.EOFException: JSON error (end-of-file)>

我从 Twitter 文档中假设,当使用流连接时,Twitter 会无限期地保持流打开。我一定做出了一些错误的假设。我目前正在深入研究 clojure twitter-api 代码,看看发生了什么,但我认为更多的目光可以帮助我更快地弄清楚这一点。

最佳答案

我也遇到了和你一样的问题。正如您所发现的,如果在过去三十秒左右没有接收到数据,则流函数会发出一条空消息。尝试将其读取为 json 会导致您看到的 EOF 异常。

我不知道有什么方法可以阻止这些电话。就我而言,我使用一个简单的条件解决了这个问题,当没有 JSON 可供读取时,该条件会回退到空映射。

(if-not (clojure.string/blank? %)
(json/read-str % :key-fn keyword)
{})

关于clojure - 使用 clojure twitter-api 获取 "java.io.EOFException: JSON error",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10114813/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com