2014-10-28 4 views
2

방금 ​​pyftpdlib로 시작했습니다. 먼저 수행 할 작업은 예제 서버를 스레드로 감싸는 것입니다. 하지만이 스크립트를 실행하면 스크립트가 종료되지 않습니다.pyftpdlib FTP 서버를 중지하려면 어떻게해야합니까?

from pyftpdlib.authorizers import DummyAuthorizer 
from pyftpdlib.handlers import FTPHandler 
from pyftpdlib.servers import FTPServer 
import logging 

import threading 

class FtpThread(threading.Thread): 
    def __init__(self, user_list): 
    self.user_list = user_list 
    self.killswitch = 0 
    threading.Thread.__init__(self) 
    def run(self,*args,**kwargs): 
    authorizer = DummyAuthorizer() 
    authorizer.add_user('user', 'bla', '/home/user/git/verteilerCore2/default_basedir/in/1/', perm='elradfmwM') 
    handler = FTPHandler 
    handler.authorizer = authorizer 

    logging.basicConfig(filename='/var/log/verteiler_ftp.log', level=logging.INFO) 
    handler.banner = "pyftpdlib based ftpd ready." 
    address = ('', 21) 
    self.server = FTPServer(address, handler) 
    self.server.max_cons = 256 
    self.server.max_cons_per_ip = 5 
    self.server.serve_forever() 

    def stop(self): 
    self.server.close_all() 

def main(): 
    ftp_server = FtpThread("") 
    ftp_server.start() 
    import time 
    time.sleep(1) 
    ftp_server.stop() 

if __name__ == '__main__': 
    main() 

server_forever를 중지하려면 어떻게해야합니까? 호출 "close_all는"봉사에서 서버를 중지하지만, 전체 스크립트는 :(

+0

"서버가 서비스를 중지합니다"- 더 이상 요청을 받아들이지 않는다는 의미입니까? – User

+0

예. 연결할 수는 없지만 스레드가 종료되지 않습니다 . – JasonTS

답변

0

윈도우 8에 그것을 시도 종료하지 않습니다 그것은 깨끗하게 종료를 수행합니다

[I 14-10-28 11:49:18] >>> starting FTP server on :::21, pid=1892 <<< 
[I 14-10-28 11:49:18] poller: <class 'pyftpdlib.ioloop.Select'> 
[I 14-10-28 11:49:18] masquerade (NAT) address: None 
[I 14-10-28 11:49:18] passive ports: None 
[I 14-10-28 11:49:19] >>> shutting down FTP server (0 active fds) <<< 

당신이 당신의 설정에 대한 자세한 내용을 제공 할 수 ?

+0

저는 debian 7, python 2.7 및 현재 버전을 실행 중입니다. 버전의 pyftpdlib. 도와 줘서 고마워. – JasonTS

+0

나는 우분투에서 그것을 시도하고 붙어, 내가 더 깊이 봤어. n pyftpdlib의 소스 코드가 있고 필요한 것을 정확히 구현하고 멈추지 않는 테스트가 있습니다. https://code.google.com/p/pyftpdlib/source/browse/trunk/test/test_ftpd.py (line # 240)) –

+0

이전에이 테스트 클래스를 보았지만 내 코드가 작동하지 않아야하는 이유를 알 수 없습니다. 차라리 많은 코드를 복사하는 것보다 문제를 발견 할 수 있습니다. 그래도 고마워 – JasonTS

관련 문제