[#40081] Module.constantsとModule.const_get — HASHIMUKAI Toshikatsu <hashi@...>
はしむかい、というものです。
4 messages
2004/10/12
[#40085] require 中に例外が発生したときの対処について — SASADA Koichi <ko1@...>
ささだです。
5 messages
2004/10/13
[#40088] Current optparse and iconv? — Takahiro Kambe <taca@...>
こんばんは。
8 messages
2004/10/13
[#40089] Re: Current optparse and iconv?
— nobu@...
2004/10/13
なかだです。
[#40094] 数式処理の型 — Dai Watanabe <dai@...>
わたなべ@ひたち ともうします。
6 messages
2004/10/14
[#40112] win32oleからのマクロの呼び出し — Kazuhiro Oinuma <core379@...>
生沼と申します。
7 messages
2004/10/18
[#40130] Ruby/Tk の講習会 — Hidetoshi NAGAI <nagai@...>
永井@知能.九工大です.
12 messages
2004/10/25
[#40149] Re: Ruby/Tk の講習会 (開催します)
— Hidetoshi NAGAI <nagai@...>
2004/11/01
永井@知能.九工大です.
[#40131] 新潟の大地震 — Wakou Aoyama <wakou@...>
(とっても)お久しぶりです。青山です。
6 messages
2004/10/25
[ruby-list:40147] SOAPのTimeout::Errorを防ぐ方法
From:
GOTO Naohisa <ngoto@...>
Date:
2004-10-30 13:34:12 UTC
List:
ruby-list #40147
後藤といいます。
SOAPで時間のかかる処理を行わせると Timeout::Error が発生し
タイムアウトしてしまう現象に悩んでいます。
例を挙げると、国立遺伝学研究所が提供しているウェブサービス
(http://xml.nig.ac.jp/wsdl/index.jsp)のひとつに、
生物の塩基・アミノ酸データベースの検索を行うサービスがあります。
これを使用するため、
http://rrr.jin.gr.jp/rwiki?cmd=view;name=SOAP4R%A4%C7%CD%B7%A4%DC%A4%A6
を参考にして、以下のようなコードを書いてみました。
######################################################################
#
require 'soap/wsdlDriver'
# require 'timeout'
# alias timeout_orig timeout
# def timeout(x, &block)
# timeout_orig(x * 100, &block)
# end
wsdl = 'http://xml.nig.ac.jp/wsdl/Blast.wsdl'
driver = SOAP::WSDLDriverFactory.new(wsdl).create_driver
driver.generate_explicit_type = true
query = <<__END__
>ADH1
MSTAGKVIKCKAAVLWELKKPFSIEEVEVAPPKAHEVRIKMVAVGICGTDDHVVSGTMVT
PLPVILGHEAAGIVESVGEGVTTVKPGDKVIPLAIPQCGKCRICKNPESNYCLKNDVSNP
QGTLQDGTSRFTCRRKPIHHFLGISTFSQYTVVDENAVAKIDAASPLEKVCLIGCGFSTG
YGSAVNVAKVTPGSTCAVFGLGGVGLSAIMGCKAAGAARIIAVDINKDKFAKAKELGATE
CINPQDYKKPIQEVLKEMTDGGVDFSFEVIGRLDTMMASLLCCHEACGTSVIVGVPPDSQ
NLSMNPMLLLTGRTWKGAILGGFKSKECVPKLVADFMAKKFSLDALITHVLPFEKINEGF
DLLHSGKSIRTILMF
__END__
puts 'small database (database = PDB)'
puts driver.searchSimple('blastp', 'PDB', query)
puts 'large database (database = DAD)'
puts driver.searchSimple('blastp', 'DAD', query)
######################################################################
比較的小さなデータベースの場合は正常に結果を取得できるのですが、
大きなデータベースに対する検索では Timeout::Error が発生します。
以下のようにして
alias timeout_orig timeout
def timeout(x, &block)
timeout_orig(x * 100, &block)
end
無理矢理タイムアウトの時間を長くすると、Ruby 1.8.2-pre2 では正常に
終了しました。Ruby 1.8.1 では、それでも Timeout::Error が発生します。
そこで質問なのですが、SOAP::WSDLDriverFactory を使用する場合、
どうやったらタイムアウトの時間を長くすることができるのでしょうか?
--
後藤 直久 ngoto@gen-info.osaka-u.ac.jp
大阪大学 遺伝情報実験センター ゲノム情報解析分野 (安永研究室)