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

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

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

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

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

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

基于我今晚的艰苦经历,试图让两台基于机械化的任务在Event Machine和这个有点古老的交换中串联运行,不,它似乎不是线程安全的。

根据Aaron Patterson本人的这封电子邮件 ,如果您不在线程之间共享代理,那么您应该没问题。

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