【发布时间】:2015-06-28 17:59:16
【问题描述】:
我的问题是执行 clojure 程序时出现意外情况。
我使用 Ubuntu 14.04 x64、Lein 和 Clojure(都是最后一个版本)。 我已经完成了我的小项目(网络爬虫,只是为了学习 clojure)。 它有效,我确定('因为我已经在 repl 中运行过它)。
好的,我正在尝试在终端中使用 lein 运行它(查看屏幕截图)。 它工作正常,然后打印经过的时间。 但是,它正在等待一些东西。那就是问题所在。程序无法停止,也无法将控制权返回给 ubuntu 的终端。我第一次面对它,我之前的所有项目都是自己编译的。现在唯一的方法是“Ctrl + C”。 在代码中,我使用“命令式”命令(doseq、do)、文件 i/o(带有打开的读取器/写入器)、代理(发送、等待)和“clj-http.client”来下载网页。它们是潜在的原因。
这是我的“主要”:
(defn crawl-bunch [depth]
(do
(send-off urls visit-urls)
(await urls)
(renew-urls)
(await urls)
(send-off urls mark-used-urls)
(await urls)
(dec depth)))
(defn crawl [depth]
(loop [i depth]
(if (= i 0)
(save-found-urls "out_urls.txt")
(recur (crawl-bunch i)))))
(defn -main [& args]
(time
(do
(file-to-urls "urls.txt")
(crawl 1))))
这里是完整的源代码 - 近 100 个字符串 (/src/crawler/core.clj):https://github.com/ivanpetrov16130/crawler
请告诉我,如何解决? 感谢您的回答,请原谅语法、句法和逻辑错误。
【问题讨论】:
-
zero323,它调用“crawl-bunch”函数,该函数访问“agent”中的所有url,然后返回递减的“i”。我的错误,我应该将此功能添加到我的问题中。
-
在退出前尝试运行shutdown-agents。
-
bsvingen,谢谢,它有效!这么简单……
-
太好了,我会写它作为答案。
-
如果解决了您的问题,请接受 bsvingen 的回答;无需在问题中添加“更新”。
标签: ubuntu clojure terminal web-crawler leiningen