저는 우리 파트너 중 한 사람이 고용 한 하청 업체로부터 들어오는 멀티미디어 컨텐츠의 게이트 키퍼 역할을하는 맞춤 FTP 클라이언트를 작성하고 있습니다. 내가 파일을 디스크에 로컬로 기록하기 전에 파일 내용을 구문 분석 할 수 있기 때문에 트위스트를 선택했으며 어쨌든 트위스트를 탐색 할 기회를 찾고있었습니다. 'twisted.protocols.ftp.FTPClient.retrieveFile'을 사용하여 파일을 가져오고, 이스케이프 된 경로를 파일에 전달하고, 프로토콜을 'retrieveFile'메소드에 전달합니다. 나는 절대적으로 전체 파일을 검색했기 때문에 콜백의 이벤트 핸들러가 파일을 디스크에 로컬로 기록한 다음 FTP 서버에서 원격 파일을 삭제할 것이므로 lftp에서 alla -E 스위치 동작 고객. 제 질문은, 정말로 이것에 대해 걱정할 필요가 있습니까, 아니면 파일이 완전히 검색되지 않으면 오류가 발생한다고 가정 할 수 있습니까?Twisted의 FTPClient.retrieveFile 메소드로 검색 한 파일을 검사하여 완성도를 확인하십시오.
3
A
답변
4
이 영역에서 동작에 대한 몇 가지 단위 테스트가 있습니다.
twisted.test.test_ftp.FTPClientTestCase.test_failedRETR
이 가장 직접적인 관련성이 있습니다. 파일 전송이 진행되는 동안 제어 및 데이터 연결이 끊어지는 경우를 다룹니다.
이 영역의 테스트 적용 범위가 크게 개선 될 수 있다고 생각됩니다. 전송이 진행되는 동안 데이터 연결이 손실되는 경우를 다루는 테스트는 없습니다. 이 까다로운 만드는 한 가지는 FTP가 매우 강력한 프로토콜이 아닙니다. 파일 전송의 끝은 데이터 연결을 닫음으로써 신호됩니다. 안전을 기하기 위해 수신 할 것으로 예상되는 바이트 수를 수신했는지 확인해야합니다. 이 검사를 수행하는 유일한 방법은 미리 파일 크기를 확인하거나 LIST
(FTPClient.list
)을 사용하여 서버에 요청하는 것입니다.
이 모든 것을 감안할 때 파일 전송이 완료되면 항상 서버에 얼마나 많은 바이트를 받았는지 물어보고 프로토콜에 전달 된 바이트 수와 일치하는지 확인하십시오. Deferred
이 (가) retrieveFile
에서 반환 될 때가끔 오류가 발생할 수 있지만, 그렇지 않은 경우에도 안전하게 유지됩니다.
관련 문제
- 1. 레지스트리를 검사하여 IIS가 설치되어 있는지 확인하십시오.
- 2. 파일을 드래그 한 애플릿을 확인하십시오.
- 3. Twisted의 서비스에서 ServerFactory에 액세스하기
- 4. ASPX 파일을 검사하여 RESX에서 참조 된 리소스 키가 제외되어 있는지 확인하십시오.
- 5. ".min.js"유형의 파일을 제외하려면 확인하십시오.
- 6. 정확한 헤더 파일을 확인하십시오.
- 7. VB.NET의 폴더에있는 파일을 확인하십시오.
- 8. Windows OS에서 C#으로 파일을 마지막으로 수정 한 시간을 확인하십시오.
- 9. Twisted의 선택/투표 대 반응기주의 사항
- 10. SSIS 2005 - 파일을 검사하여 파일이 존재하지 않는지 확인하는 방법
- 11. 파일 세트의 모든 파일을 검사하여 개미로 된 문자열을 포함하십시오
- 12. PVCS에서 nant & nantconrib 파일을 확인하십시오.
- 13. 파일을 작성하고 파일이 있는지 확인하십시오.
- 14. PHP 누군가가 파일을 선택했는지 확인하십시오.
- 15. 파이썬 AST를 메소드로 컴파일
- 16. 메소드로 메소드 반환하기
- 17. RubyMine의 메소드로 어떻게 이동합니까?
- 18. Android 기기에 검색 하드웨어 버튼이 있는지 확인하십시오.
- 19. System.Runtime.Caching을 사용하지만 검색 할 때 null인지 확인하십시오.
- 20. 현재의 Drupal 페이지가 검색 결과 페이지인지 확인하십시오.
- 21. iPhone에서 데이터베이스에서 검색 한 wav 파일을 재생 하시겠습니까?
- 22. 폴더의 파일을 검색
- 23. Application.onRequestStart의 ARGUMENTS.TargetPage를 검사하여 ColdFusion 보안을 유지합니까?
- 24. android 검색 배열 및 오디오 파일을 검색
- 25. PHP 페이지가 포함되어 있는지 확인하십시오.
- 26. 유닉스에서 프로그램을 실행 한 사용자가 루트인지 확인하십시오.
- 27. 사용자 세션 당 한 번 확인하십시오 - asp.net
- 28. WYSIWYG에서 입력 한 문자의 길이를 확인하십시오
- 29. 입력 한 텍스트에 영문자 만 사용하는지 확인하십시오.
- 30. 사용자가 android 브라우저를 실행 한 시점을 확인하십시오.
Thx 정확히 내가 알아야 할 것은 FTPFileListProtocol.file 개체에서 크기를 선택하고 함께 전달하여 디스크에 기록 된 파일이 예상되는 크기인지 확인합니다. – snarkyname77