2012-11-16 5 views
2

저는 Perl 5.16.2, OAuth :: Lite (1.31)를 사용하여 웹 서비스를 작성하고 있습니다. 서버는 CentOS 릴리스 6.3 (최종), 2.6.32-279.14.1.el6.x86_64입니다.OAuth :: Lite :: 트위터에 액세스 할 때 소비자 타임 아웃

트위터 oauth에 대한 토큰을 요청할 때 OAuth::Lite get_request_token은 서버 실행을 30 초간 차단하고 때로는 적절한 응답을 반환하고 때때로 브라우저 요청을 시간 초과합니다. probrem를 재현하는

최소 코드는 아래의 30 초 후 반환됩니다

use OAuth::Lite::Consumer;                

my $consumer = OAuth::Lite::Consumer->new(          
    request_token_path => 'https://api.twitter.com/oauth/request_token',   
    consumer_key  => '[CONSUMER KEY]',        
    consumer_secret => '[CONSUMER SECRET]',    
    callback_url  => '[CALLBACK]',      
);                    

my $rtoken = $consumer->get_request_token(); 

입니다.

나는 코드를 읽고, 나는 인터넷에서 인터넷 : HTTP : 방법 라인 259-260에 그 방법 my_readline을 파악 :: HTTP 6.05

die "read timeout" unless $self->can_read; 
my $n = $self->sysread($_, 1024, length); 

블록 요청. 그리고 my_readline가 읽으려고 헤더이 헤더는 1024자를 초과

HTTP/1.1 200 OK 
Date: Fri, 16 Nov 2012 16:16:39 GMT 
Status: 200 OK 
X-MID: 266cca0268c8eb68e76eedda256c77829ea9b22e 
X-Transaction: 784ff126dfead993 
Tag: "382e5356bb65e976f6b117bacdfa05e4" 
Cache-Control: no-cache, no-store, must-revalidate, pre-check=0, post-check=0 
X-Runtime: 0.02892 
Pragma: no-cache 
Expires: Tue, 31 Mar 1981 05:00:00 GMT 
X-Frame-Options: SAMEORIGIN 
Content-Type: text/html; charset=utf-8 
Last-Modified: Fri, 16 Nov 2012 16:16:39 GMT 
Set-Cookie: k=10.36.55.109.1353082599368934; path=/; expires=Fri, 23-Nov-12 16:16:39 GMT; domain=.twitter.com 
Set-Cookie: guest_id=v1%3A135308259937793094; domain=.twitter.com; path=/; expires=Mon, 17-Nov-2014 04:16:39 GMT 
Set-Cookie: _twitter_sess=BAh7CCIKZmxhc2hJQzonQWN0aW9uQ29udHJvbGxlcjo6Rmxhc2g6OkZsYXNo%250ASGFzaHsABjoKQHVzZWR7ADoHaWQiJTJlZGJiN2MyOTMyNmM0OGY0MjJmZmY0%250AMTU3YzllYTI0Og9jcmVhdGVkX2F0bCsI0vcBCjsB--21ab24a6dd6596b1dcc78651c0b6a4836b320621; domain=.twitter.com; path=/; HttpOnly 
Vary: Accept-Encoding 
Content-Encoding: gzip 
Content-Length: 150 
Server: tfe 

입니다. 그래서 1024에서 2048로 바뀌었고, 잘 작동하기 시작했습니다 ... 이 문제의 원인을 파악하고 싶습니다.

감사합니다. 감사합니다. .

+2

Net :: HTTP 6.03으로 스크립트를 실행하면 문제가 없습니다. 6.04 시간 초과보다 강합니다. –

+2

그리고 CPAN에 버그 보고서를 올렸습니다 ... https://rt.cpan.org/Ticket/Display.html?id=81237 –

답변

2

몇 년 전, 나는 CentOS에서 특히 LWP :: Protocol :: https (OAuth :: Lite에서 사용됨)에 좋지 않은 경험을했습니다. 긴 이야기를 짧게하기 위해서 : Net :: SSLeay를 컴파일하려고 너무 많은 좌절감이 생기면 WWW :: Curl에 의해 LWP :: UserAgent를 대체하게됩니다. 어느 것이 잘 컴파일됩니다. 그리고 그 간단한 응용 프로그램에 잘 작동했습니다. 그러나 OAuth :: Lite는 LWP와 밀접하게 결합되어 있으며 모든 것을 다시 구현하는 것은 의미가 없습니다. 그리고 libcurl을 LWP 기반 코드와 함께 사용하는 또 다른 방법이 있습니다. http://blogs.perl.org/users/stas/2012/11/libcurl-as-lwp-backend-or-all-your-protocol-are-belong-to-us.html

+1

답변을 주셔서 감사합니다. 나중에 답변 드리겠습니다. 지금 당장은 내가 물었던 질문의 해결책을 궁금해하는 것에 지쳤다. 어쨌든 유용한 정보를 주셔서 감사합니다! –

관련 문제