是使用线程和ruby机械化安全吗?

时间:2009-05-24 05:20:25

标签: ruby multithreading mechanize

有没有人看到过很多这样的错误:

Exception `Net::HTTPBadResponse' at /usr/lib/ruby/1.8/net/http.rb:2022
- wrong status line: _SOME HTML CODE HERE_

使用线程和机械化时?我相对肯定这是 线程和net/http库之间的一些不良行为,但确实如此 任何人都有任何建议,你想要的线程的上限 使用mechanize / nethttp时立即运行?我怎样才能捕获这种异常,因为rescue Net::HTTPBadResponse不起作用?

3 个答案:

答案 0 :(得分:1)

这在Mechanize中可能是非线程安全的,但我可以想到可能导致同样问题的其他错误。如果您正在使用持久连接,我将从禁用持久连接开始。接下来要做的是查看你的代码,并确保你对你处理的对象要小心。如果您的应用程序有多个线程与公共对象混淆,那么可能会破坏一个本来就是线程安全的库。

如果在某处存在线程问题,您可以安全使用的线程的上限是1.还有,您只需要对您希望问题发生的频率进行权衡,而不是是否是否发生。

答案 1 :(得分:0)

根据我今晚的艰苦经历,尝试在Event Machine和this somewhat ancient exchange中同时运行两个基于机械化的任务,不,它似乎不是线程安全的。

答案 2 :(得分:0)

根据this email by Aaron Patterson himself,如果您不在线程之间共享代理,那么您应该没问题。

恕我直言,这意味着Mechanize不是线程安全的。