[twill] Threads and Twill

Barry Hart barry.hart at predictix.com
Mon Jul 5 17:31:15 PDT 2010


I'm not sure that Twill is thread safe. I have used Twill in concurrent processes (rather than threads) with no problems.

Barry

----- Original Message -----
From: "Carlos Marcelo Cabrera" <point_to_null at esdebian.org>
To: twill at lists.idyll.org
Sent: Monday, July 5, 2010 7:34:29 PM
Subject: [twill] Threads and Twill

I'm trying to write a program based on Twill that takes advantage of parallel processing of queries.

Using the module threading just as in http://pastebin.com/zHapMYeE I get the following output:

<output>
Singlethread try:
sex: 826.000.000
family: 1.340.000.000
windows: 955.000.000
linux: 268.000.000
religion: 305.000.000
science: 795.000.000

Multithreads try:
Exception in thread Thread-7:
Traceback (most recent call last):
  File "/usr/lib/python2.6/threading.py", line 532, in __bootstrap_inner
    self.run()
  File "threadtwil.py", line 25, in run
    self.result = self.func(*self.args, **self.kw)
  File "threadtwil.py", line 48, in count_pages
    browser.go("http://google.com")
  File "/usr/lib/pymodules/python2.6/twill/browser.py", line 114, in go
    self._journey('open', u)
  File "/usr/lib/pymodules/python2.6/twill/browser.py", line 543, in _journey
    self.result = ResultWrapper(code, r.geturl(), r.read())
AttributeError: 'NoneType' object has no attribute 'geturl'

Exception in thread Thread-8:
Traceback (most recent call last):
  File "/usr/lib/python2.6/threading.py", line 532, in __bootstrap_inner
    self.run()
  File "threadtwil.py", line 25, in run
    self.result = self.func(*self.args, **self.kw)
  File "threadtwil.py", line 49, in count_pages
    tc.formvalue(2, "q", query)
  File "/usr/lib/pymodules/python2.6/twill/commands.py", line 431, in formvalue
    form = browser.get_form(formname)
  File "/usr/lib/pymodules/python2.6/twill/browser.py", line 274, in get_form
    forms = self.get_all_forms()
  File "/usr/lib/pymodules/python2.6/twill/browser.py", line 261, in get_all_forms
    forms = list(self._browser.forms())
  File "/usr/lib/python2.6/dist-packages/mechanize/_mechanize.py", line 424, in forms
    if not self.viewing_html():
  File "/usr/lib/python2.6/dist-packages/mechanize/_mechanize.py", line 449, in viewing_html
    raise BrowserStateError("not viewing any document")
BrowserStateError: not viewing any document

Exception in thread Thread-12:
Traceback (most recent call last):
  File "/usr/lib/python2.6/threading.py", line 532, in __bootstrap_inner
    self.run()
  File "threadtwil.py", line 25, in run
    self.result = self.func(*self.args, **self.kw)
  File "threadtwil.py", line 49, in count_pages
    tc.formvalue(2, "q", query)
  File "/usr/lib/pymodules/python2.6/twill/commands.py", line 431, in formvalue
    form = browser.get_form(formname)
  File "/usr/lib/pymodules/python2.6/twill/browser.py", line 274, in get_form
    forms = self.get_all_forms()
  File "/usr/lib/pymodules/python2.6/twill/browser.py", line 261, in get_all_forms
    forms = list(self._browser.forms())
  File "/usr/lib/python2.6/dist-packages/mechanize/_mechanize.py", line 424, in forms
    if not self.viewing_html():
  File "/usr/lib/python2.6/dist-packages/mechanize/_mechanize.py", line 449, in viewing_html
    raise BrowserStateError("not viewing any document")
BrowserStateError: not viewing any document

sex: None
family: None
windows: 268.000.000
linux: 268.000.000
religion: 305.000.000
science: None
</output>

Is there a way to run parallel Twill?

Regards

-- 
/* ************************************************************
Carlos Marcelo Cabrera, alias "Point to null"
Medios de contacto adicionales:
    Weblog: http://pointtonull.esdebian.org
    Jabber: point_to_null at esdebian.org
    Yahoo: dxm84ar at yahoo.com.ar
    ICQ: 303014677 
************************************************************ */

_______________________________________________
twill mailing list
twill at lists.idyll.org
http://lists.idyll.org/listinfo/twill



More information about the twill mailing list