Process with ftplib

2008-12-26 Thread nemo
Hi,all
There seems something wrong when I use multiprocessing.Process with
ftplib,
My ftp class has a connection method like this:
class qftp:
def __init__(...):
self.ftp = FTP()
def connection(self):
self.ftp.connect(self.addr, self.port)
self.ftp.login(self.user, self.password)
when i call the method like:
ftp = qftp(host, port, user, password)
ftp.connect()
ftp.pwd()
It works well but when I using the Process module, something seems
wrong:
ftp = qftp(host, port, user, password)
p = multiprocessing.Process(target = ftp.connect)
p.join()
ftp.ftp.pwd()   #after join, i think a connection has
made, but it throws an exception
This give me a 'NoneType object has no attribute sendall' exception. I
wondered why?
--
http://mail.python.org/mailman/listinfo/python-list


Re: Process with ftplib

2008-12-26 Thread nemo
On Dec 26, 10:40 pm, "Gabriel Genellina" 
wrote:
> En Fri, 26 Dec 2008 11:07:30 -0200, nemo  escribió:
>
> > There seems something wrong when I use multiprocessing.Process with
> > ftplib, [...]
> > It works well but when I using the Process module, something seems
> > wrong:
> > ftp = qftp(host, port, user, password)
> > p = multiprocessing.Process(target = ftp.connect)
> > p.join()
> > ftp.ftp.pwd()                   #after join, i think a connection has
> > made, but it throws an exception
> > This give me a 'NoneType object has no attribute sendall' exception. I
> > wondered why?
>
> After p.join(), the second process has finished. The global variable ftp  
> isn't shared between them - so it does not reflect the changes made in the  
> other process.
>
> An introductory article to 
> multiprocessing:http://www.doughellmann.com/articles/CompletelyDifferent-2007-10-mult...
>
> --
> Gabriel Genellina

thanks.

--
nemo
--
http://mail.python.org/mailman/listinfo/python-list


ftp EOF error, thread and process

2008-12-28 Thread nemo
Hi all,
My code like this raise an EOFError, It happens if I use the Process
module,
while, if I use thread.start_new_thread(ftp.pwd,()), it seems works
well.
And I wondered why.

from ftplib import FTP
import thread
from multiprocessing import Process

if __name__ == '__main__':
ftp = FTP('localhost', 'movie', 'movie')
print ftp.pwd()
p = Process(target = ftp.pwd) # thread.start_new_thread
(ftp.pwd,()),
p.start()
p.join()
--
http://mail.python.org/mailman/listinfo/python-list


ftp design question

2008-12-28 Thread nemo
Hi,all.
I'm on a toy ftp project and I want it to be convinient for the user
to cancel an undergoing downloading while continue others. The
following code explains:
for file in download_files:
self.ftp.retrbinary('RETR '+file,  fileHandler)
Thers seems not a solid way to cancel this transfer and I considered
thread or process but I can't handle this correctly.
Thread: I can't kill the thread in another thread, so...
Process: There seems something wrong(raise an EOFError exception) when
I use Process(target = download_fun, args = (dir,)) for each
downloading after connection built.
Some suggestions?
--
http://mail.python.org/mailman/listinfo/python-list


Re: ftp design question

2008-12-28 Thread nemo
On Dec 29, 12:31 pm, Steve Holden  wrote:
> nemo wrote:
> > Hi,all.
> > I'm on a toy ftp project and I want it to be convinient for the user
> > to cancel an undergoing downloading while continue others. The
> > following code explains:
> > for file in download_files:
> >     self.ftp.retrbinary('RETR '+file,  fileHandler)
> > Thers seems not a solid way to cancel this transfer and I considered
> > thread or process but I can't handle this correctly.
> > Thread: I can't kill the thread in another thread, so...
> > Process: There seems something wrong(raise an EOFError exception) when
> > I use Process(target = download_fun, args = (dir,)) for each
> > downloading after connection built.
> > Some suggestions?
>
> How about
>
> for file in download_files:
>     try:
>         self.ftp.retrbinary('RETR %s' % file, fileHandler)
>     except KeyboardInterrupt:
>         print file, "transfer abandoned"
>
> Then you can cancel a single file transfer with Ctrl/C.
>
> regards
>  Steve
> --
> Steve Holden        +1 571 484 6266   +1 800 494 3119
> Holden Web LLC              http://www.holdenweb.com/

Thanks your advice,
actually, this ftp has a GUI interface, so I'm considering the
downloading part in another process or thread, whick is s a tricky
part for me to design.
--
http://mail.python.org/mailman/listinfo/python-list