[Pywikipedia-l] [ pywikipediabot-Bugs-1908157 ] Cannot edit large page in Python 2.5

SourceForge.net noreply at sourceforge.net
Tue Apr 14 18:36:02 UTC 2009


Bugs item #1908157, was opened at 2008-03-05 18:08
Message generated for change (Comment added) made by cosoleto
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=603138&aid=1908157&group_id=93107

Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: None
Group: None
Status: Closed
Resolution: Wont Fix
Priority: 7
Private: No
Submitted By: AndreasJS (andreasjs)
Assigned to: Nobody/Anonymous (nobody)
Summary: Cannot edit large page in Python 2.5

Initial Comment:
Cannot edit large page in Python 2.5.
A socket error 35 occurs.  It consistently occurs if the page is > about 30 kbyte. 

Woks OK in python 2.3.

andreas-schwabs-computer:~/Desktop/pywikipedia andreas$ python basic.py -family:wikipedia -lang:en -page:User:AndreasJS/test
Checked for running processes. 1 processes currently running, including the current process.
Getting 1 pages from wikipedia:en...


>>> User:AndreasJS/test <<<
- Test Test [[image:Wikipedia.png|thumb|This is the [[logo]] of Wikinews]]
+ Test Test Test [[image:Wikipedia.png|thumb|This is the [[logo]] of Wikinews]]

Do you want to accept these changes? ([y]es, [N]o) y
Sleeping for 5.6 seconds, 2008-03-05 11:57:19
Changing page [[en:User:AndreasJS/test]]
Traceback (most recent call last):
  File "/Users/andreas/Desktop/pywikipedia/wikipedia.py", line 1287, in _putPage
    response, data = self.site().postForm(address, predata, sysop)
  File "/Users/andreas/Desktop/pywikipedia/wikipedia.py", line 4014, in postForm
    raise ServerError(e)
ServerError: (35, 'Resource temporarily unavailable')

Got a server error when putting [[User:AndreasJS/test]]; will retry in 1 minute.
Changing page [[en:User:AndreasJS/test]]
Traceback (most recent call last):
  File "/Users/andreas/Desktop/pywikipedia/wikipedia.py", line 1287, in _putPage
    response, data = self.site().postForm(address, predata, sysop)
  File "/Users/andreas/Desktop/pywikipedia/wikipedia.py", line 4014, in postForm
    raise ServerError(e)
ServerError: (35, 'Resource temporarily unavailable')

Got a server error when putting [[User:AndreasJS/test]]; will retry in 2 minutes.
Changing page [[en:User:AndreasJS/test]]
Traceback (most recent call last):
  File "/Users/andreas/Desktop/pywikipedia/wikipedia.py", line 1287, in _putPage
    response, data = self.site().postForm(address, predata, sysop)
  File "/Users/andreas/Desktop/pywikipedia/wikipedia.py", line 4014, in postForm
    raise ServerError(e)
ServerError: (35, 'Resource temporarily unavailable')

Got a server error when putting [[User:AndreasJS/test]]; will retry in 4 minutes.

----------

andreas-schwabs-computer:~/Desktop/pywikipedia andreas$ python
Python 2.5 (r25:51918, Sep 19 2006, 08:49:13) 
[GCC 4.0.1 (Apple Computer, Inc. build 5341)] on darwin


System Software Overview:

  System Version:	Mac OS X 10.4.11 (8S2167)
  Kernel Version:	Darwin 8.11.1
  Boot Volume:	Macintosh HD
  Computer Name:	Andreas Schwab’s Computer
  User Name:	Andreas Schwab (andreas)




----------------------------------------------------------------------

>Comment By: Francesco Cosoleto (cosoleto)
Date: 2009-04-14 20:36

Message:
You bring good news. It's ok for me too.

----------------------------------------------------------------------

Comment By: NicDumZ — Nicolas Dumazet (nicdumz)
Date: 2009-04-14 19:57

Message:
See https://trac.macports.org/ticket/18376 the issue has been fixed in all
python ports except python25. I wont spend time coding a high-level
workaround for a lower-level issue, knowing that the said low-level bug is
going to be fixed in no more than a couple of weeks.

But again, that's only me :)

http://bugs.python.org/issue5154 is the relevant Python issue

----------------------------------------------------------------------

Comment By: Francesco Cosoleto (cosoleto)
Date: 2009-04-14 18:54

Message:
I really want see this fixed as possible, avoiding problems to users. We
can add a simple workaround based on O.S. type and Python version, for
example (in case, just print a warning of a missing feature). Another
possible solution is to add support for the cURL library and recommend it
in the installation instruction, that is very useful to resolve easily also
others very ugly and high priority problems with the current PyWikipediaBot
network code...

----------------------------------------------------------------------

Comment By: NicDumZ — Nicolas Dumazet (nicdumz)
Date: 2009-04-14 18:25

Message:
1) using socket_timeout = None in your user-config.py should "fix" the
issue on pywikipedia. 
") If you want to fix more durably the issue, please follow the
instructions on the last post of http://www.cherrypy.org/ticket/598
(bottom). It involves customizing the Python build under MacOS to avoid
defining the HAVE_POLL constant.
3) The fix applied by cherrypy here (
http://www.cherrypy.org/changeset/1915 ) is not applicable for pywikipedia:
they basically re-implement a complete new socket file descriptors to use
non-blocking socket calls, to avoid calling the broken poll() of MacOS.
Clearly, we're not going to do this here

I'm closing this as Wont Fix because it is a python+MacOS issue, and that
fixing the issue on the Python side is more relevant than implement complex
structures in pywikipedia to overcome that Python issue.

Comments are left open purposely.

----------------------------------------------------------------------

Comment By: Francesco Cosoleto (cosoleto)
Date: 2009-04-10 00:35

Message:
What about latest Python version (2.6.1)?

Doesn't look as reported to Python issue tracker, though.

----------------------------------------------------------------------

Comment By: Pietrodn (pietrodn)
Date: 2008-04-18 17:29

Message:
Logged In: YES 
user_id=1887175
Originator: NO

I have the same problem (and use Mac OS X 10.5.2).

----------------------------------------------------------------------

Comment By: AndreasJS (andreasjs)
Date: 2008-03-10 02:15

Message:
Logged In: YES 
user_id=1738850
Originator: YES

There is a much easier solution:
Add the following line to user-config.py:

socket_timeout = None

Note: Apparently, the socket timeout is broken in the combination python
2.5 and MacOS 10.4. If socket_timeout is set to any number, error 35 occurs
when putting pages larger than ca. 30 kb.

----------------------------------------------------------------------

Comment By: AndreasJS (andreasjs)
Date: 2008-03-10 00:27

Message:
Logged In: YES 
user_id=1738850
Originator: YES

After reading the following thread:

http://www.cherrypy.org/ticket/598

I came up with the following solution:

        conn.endheaders()
        if hasattr(conn.sock, 'setblocking'): #####
            conn.sock.setblocking(1) ######
        conn.send(data)

I am not 100% sure if this is safe, but maybe someone socket-savvy can
find out by reading the above thread.





----------------------------------------------------------------------

Comment By: Nobody/Anonymous (nobody)
Date: 2008-03-08 23:19

Message:
Logged In: NO 

Sitll doesn't work:

Python 2.5.2 (r252:60911, Feb 22 2008, 07:57:53) 
[GCC 4.0.1 (Apple Computer, Inc. build 5363)] on darwin

----------------------------------------------------------------------

Comment By: Merlijn S. van Deen (valhallasw)
Date: 2008-03-08 21:53

Message:
Logged In: YES 
user_id=687283
Originator: NO

This probably is a bug in an updated version of urllib2 in python2.5+.
Could you try updating your python install and see if the problem remains?

----------------------------------------------------------------------

Comment By: Pietrodn (pietrodn)
Date: 2008-03-05 21:51

Message:
Logged In: YES 
user_id=1887175
Originator: NO

I also have Mac OS X 10.4.11 + Python 2.5 and have the same problem.

----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=603138&aid=1908157&group_id=93107



More information about the Pywikipedia-l mailing list