Python 克隆mechanize.Browser会导致错误

Python 克隆mechanize.Browser会导致错误,python,python-2.7,mechanize-python,Python,Python 2.7,Mechanize Python,我目前正在尝试使用mechanize.Browser对象同时发送多个请求,我的方法是启动一些线程。 每个线程都应该克隆mechanize.Browser对象并发送请求。 但是复制对象会导致类型错误: TypeError: object.__new__(cStringIO.StringO) is not safe, use cStringIO.StringO.__new__() 但我不知道如何让它运行。 打开一些页面后,我生成线程并执行以下操作: newbr = copy.dee

我目前正在尝试使用mechanize.Browser对象同时发送多个请求,我的方法是启动一些线程。 每个线程都应该克隆mechanize.Browser对象并发送请求。 但是复制对象会导致类型错误:

    TypeError: object.__new__(cStringIO.StringO) is not safe, use cStringIO.StringO.__new__()
但我不知道如何让它运行。 打开一些页面后,我生成线程并执行以下操作:

    newbr = copy.deepcopy(br)
这导致了错误

有什么想法吗

致以最良好的祝愿,
克里斯

我面临着一个类似的问题,正如在SO帖子中提到的那样

一种解决方案是遵循链接,然后使用
br.back()
函数稍后返回初始状态

如果这不起作用(对我来说不起作用),如果您不反对使用其他库,您可以使用非常好的
请求
库来跟随链接。在我的例子中,我想填写一个表单并提交
post
get
,我可以使用下面的代码来完成这项工作(应该只需要稍加修改即可跟随链接,例如,在br.links()循环中使用
链接)


为什么要复制
浏览器
实例?因为我想跟踪多个线程的链接。跟随链接会更改对象状态,因此其他线程不能执行相同的操作
import mechanize
import requests

def testErrorCodes(br,theCodes):
    for x in theCodes:

        br.select_form(nr=0)

        theAction = br.action
        payload = {'code': x}

        response = requests.post(theAction, data=payload)
        print response.status_code

br=mechanize.Browser()
br.set_handle_robots(False)
response = br.open("http://savanttools.com/test-http-status-codes")

testErrorCodes(br,[401,402,403,404,500,503,504]) # Prints the error codes 

testErrorCodes(br,[404]) # The browser is still alive and well to be used again!