Odd/Weird errors with FTPLib

Bakes bakes at ymail.com
Sun Sep 13 23:53:08 CEST 2009


On 13 Sep, 22:41, Chris Rebert <c... at rebertia.com> wrote:
> On Sun, Sep 13, 2009 at 2:34 PM, Bakes <ba... at ymail.com> wrote:
> > I am using a simple python script to download my logfiles. This is on
> > a while loop, the logfile grows rapidly, so it is necessary for python
> > to start downloading the new script as soon as it has finished the
> > old.
>
> > It works fine (for about 20 minutes), then crashes. I have removed a
> > couple of excepts, and have narrowed the error down to a 'error_perm:
> > 550 logfile.log: The data is invalid.' error.
>
> > Does anyone know what the problem might be regarding this, and what I
> > might do to fix it?
>
> Including an actual code snippet and the full error traceback would help a lot.
>
> According tohttp://en.wikipedia.org/wiki/List_of_FTP_server_return_codes,
> error code 550 translates to:
> "Requested action not taken. File unavailable (e.g., file not found,
> no access)."
>
> Does the logfile get rotated or something, thus causing it to briefly not exist?
>
> It might also help if you explain how your logfile system works.
>
> Cheers,
> Chris
> --http://blog.rebertia.com

It's a cod4 gameserver logfile, being downloaded for a python bot to
parse.

The logfile is downloaded using this try/except while loop.


    while True:
        try:
            if ftp == False:
                self.debug('FTP connection not active, attempting to
(re)connect')
                ftp = self.ftpconnect()
            size=os.path.getsize('games_mp.log')
            ftp.retrbinary('RETR ' + os.path.basename(self.ftpconfig
['path']), handleDownload, rest=size)
            if self.console._paused:
                self.console.unpause()
        except:
            print error
            self.debug('Lost connection to server, pausing until
updated properly, Sleeping 10 seconds')
            self.console.pause()
            try:
                ftp.close()
                self.debug('FTP Connection Closed')
            except:
                self.debug('FTP does not appear to be open, so not
closed')
            ftp = False
            time.sleep(10)


I can only assume that occasionally, the logfile is being written to
by the gameserver at the same time that it's downloading.
If this was the case, do you think a try: download except: sleep
900msec then download loop would work?



More information about the Python-list mailing list