2009-12-16 3 views
1

다음은 실질적인 질문입니다.haskell은 http 읽기를 chuncked

http 서버 (데이터베이스 업데이트)에서 큰 파일을 다운로드하고 싶습니다. 이 작업은 사용자 UI를 차단하여 데이터 입력을 방해합니다. 그래서 문제는 사용자 진행률 표시 줄을 보여주는 것입니다. 그러면 사용자에게 진행률 표시 줄이 표시되어 어느 정도 기다려야하는지 알려줍니다.

python에서 요청 객체는 파일과 유사한 객체를 엽니 다. 나는 그것을 척으로 읽고 콜백 함수로 GUI에보고했다.

어떻게 haskell에서 같은 것을 구현할 수 있습니까? 현재 다운로드 한 크기를 얻고보고하는 방법?

답변

1

하스켈에서 파이썬 버전과 비슷하게 사용 하겠지만 세부 정보는 사용하는 GUI 라이브러리에 따라 다릅니다.

도착한 입력 양을 감지하는 방법에는 몇 가지 옵션이 있습니다. 한 가지 방법은 lazy IO를 사용하는 것입니다. 그런 다음 일반적으로 데이터가 도착할 때 느리게 생성되는 결과로 문자열을 얻습니다. 그런 다음 목록을 탐색하고 UI가 업데이트 될 때 IO 기능을 작성할 수 있습니다. 이것은 매우 편리한 방법이 될 수 있지만, 게으른 IO는 매우 약해지기 쉽기 때문에주의해서 사용해야합니다.

다른 옵션은 청크가 도착할 때 청크에 액세스 할 수있는 인터페이스를 사용하는 것입니다. 그러한 라이브러리에 대한 개인적인 경험은 없지만 HTTP 라이브러리는이를 Base 모듈에서 지원합니다.

진행 상황을 추적하기 위해 MissingH 라이브러리에있는 좋은 모듈이 있습니다 : Data.Progress.Tracker.

특정 시나리오에 대해 더 자세히 설명해 주시면 추가로 의견을 제시 할 수 있습니다.

행운을 빈다.

+0

당신은 "소스를 사용하여, Luk"처럼 보입니다. 이것은 내가 스스로하고 싶지 않은 것이다. 답변을 수락하지만 -1을 입력 했으므로 여전히 소스를 조사해야합니다. 조금 후에 나는 내가 검색 한 것을 여기에 올릴 것이다. –

+0

그러나 문제에 대한 애매한 설명을하면 정확히 어떻게해야하는지 정확하게 보여주는 것이 쉽지 않습니다. 제가 말했듯이, 좀 더 구체적인 세부 사항을 제시하면보다 도움이되는 답을 줄 수 있습니다. – svenningsson

관련 문제