# Исключение задачи: Net::ReadTimeout при использовании пользовательского инструмента

**URL:** https://meta.discourse.org/t/job-exception-net-readtimeout-during-custom-tool-usage/370689
**Category:** Support
**Tags:** ai, ai-bot
**Created:** [18.Июнь.2025 13:05:26 UTC](https://meta.discourse.org/t/job-exception-net-readtimeout-during-custom-tool-usage/370689 "2025-06-18T13:05:26Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![MachineScholar](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/machinescholar/32/424719_2.png) [@MachineScholar](https://meta.discourse.org/u/MachineScholar)
#### Post date: [18.Июнь.2025 13:05:26 UTC](https://meta.discourse.org/t/job-exception-net-readtimeout-during-custom-tool-usage/370689/1 "2025-06-18T13:05:26Z")

</div>

Я настроил пользовательский инструмент для использования Perplexity Deep Research (который может занимать несколько минут), и, по моему мнению, именно это вызывает ошибку. Есть ли какие-либо обходные пути, кроме создания собственного плагина для увеличения таймаута HTTP в Discourse AI?

> **Стек вызовов**
>
> ```bash
> Сообщение (3 сообщения)
> 
> Исключение в задаче: Net::ReadTimeout
> 
> Стек вызовов
> 
> net-protocol-0.2.2/lib/net/protocol.rb:229:in `rbuf_fill'
> net-protocol-0.2.2/lib/net/protocol.rb:199:in `readuntil'
> net-protocol-0.2.2/lib/net/protocol.rb:209:in `readline'
> net-http-0.6.0/lib/net/http/response.rb:158:in `read_status_line'
> net-http-0.6.0/lib/net/http/response.rb:147:in `read_new'
> net-http-0.6.0/lib/net/http.rb:2420:in `block in transport_request'
> net-http-0.6.0/lib/net/http.rb:2411:in `catch'
> net-http-0.6.0/lib/net/http.rb:2411:in `transport_request'
> net-http-0.6.0/lib/net/http.rb:2384:in `request'
> rack-mini-profiler-4.0.0/lib/patches/net_patches.rb:19:in `block in request_with_mini_profiler'
> rack-mini-profiler-4.0.0/lib/mini_profiler/profiling_methods.rb:51:in `step'
> rack-mini-profiler-4.0.0/lib/patches/net_patches.rb:18:in `request_with_mini_profiler'
> /var/www/discourse/plugins/discourse-ai/lib/personas/tools/tool.rb:222:in `block in send_http_request'
> net-http-0.6.0/lib/net/http.rb:1632:in `start'
> net-http-0.6.0/lib/net/http.rb:1070:in `start'
> /var/www/discourse/plugins/discourse-ai/lib/personas/tools/tool.rb:221:in `send_http_request'
> /var/www/discourse/plugins/discourse-ai/lib/personas/tool_runner.rb:740:in `block (3 levels) in attach_http'
> /var/www/discourse/plugins/discourse-ai/lib/personas/tool_runner.rb:772:in `in_attached_function'
> /var/www/discourse/plugins/discourse-ai/lib/personas/tool_runner.rb:734:in `block (2 levels) in attach_http'
> /var/www/discourse/plugins/discourse-ai/lib/personas/tool_runner.rb:171:in `eval'
> /var/www/discourse/plugins/discourse-ai/lib/personas/tool_runner.rb:171:in `eval_with_timeout'
> /var/www/discourse/plugins/discourse-ai/lib/personas/tool_runner.rb:187:in `invoke'
> /var/www/discourse/plugins/discourse-ai/lib/personas/tools/custom.rb:70:in `invoke'
> /var/www/discourse/plugins/discourse-ai/lib/personas/bot.rb:267:in `invoke_tool'
> /var/www/discourse/plugins/discourse-ai/lib/personas/bot.rb:227:in `process_tool'
> /var/www/discourse/plugins/discourse-ai/lib/personas/bot.rb:126:in `block in reply'
> /var/www/discourse/plugins/discourse-ai/lib/completions/endpoints/base.rb:187:in `block (3 levels) in perform_completion!'
> /var/www/discourse/plugins/discourse-ai/lib/completions/endpoints/base.rb:230:in `block (5 levels) in perform_completion!'
> /var/www/discourse/plugins/discourse-ai/lib/completions/endpoints/base.rb:230:in `each'
> /var/www/discourse/plugins/discourse-ai/lib/completions/endpoints/base.rb:230:in `block (4 levels) in perform_completion!'
> /var/www/discourse/plugins/discourse-ai/lib/completions/endpoints/base.rb:221:in `each'
> /var/www/discourse/plugins/discourse-ai/lib/completions/endpoints/base.rb:221:in `block (3 levels) in perform_completion!'
> net-protocol-0.2.2/lib/net/protocol.rb:535:in `call_block'
> net-protocol-0.2.2/lib/net/protocol.rb:526:in `<<'
> net-protocol-0.2.2/lib/net/protocol.rb:168:in `read'
> net-http-0.6.0/lib/net/http/response.rb:631:in `read_chunked'
> net-http-0.6.0/lib/net/http/response.rb:595:in `block in read_body_0'
> net-http-0.6.0/lib/net/http/response.rb:588:in `inflater'
> net-http-0.6.0/lib/net/http/response.rb:593:in `read_body_0'
> net-http-0.6.0/lib/net/http/response.rb:363:in `read_body'
> /var/www/discourse/plugins/discourse-ai/lib/completions/endpoints/base.rb:216:in `block (2 levels) in perform_completion!'
> net-http-0.6.0/lib/net/http.rb:2433:in `block in transport_request'
> net-http-0.6.0/lib/net/http/response.rb:320:in `reading_body'
> net-http-0.6.0/lib/net/http.rb:2430:in `transport_request'
> net-http-0.6.0/lib/net/http.rb:2384:in `request'
> rack-mini-profiler-4.0.0/lib/patches/net_patches.rb:19:in `block in request_with_mini_profiler'
> rack-mini-profiler-4.0.0/lib/mini_profiler/profiling_methods.rb:51:in `step'
> rack-mini-profiler-4.0.0/lib/patches/net_patches.rb:18:in `request_with_mini_profiler'
> /var/www/discourse/plugins/discourse-ai/lib/completions/endpoints/base.rb:158:in `block in perform_completion!'
> net-http-0.6.0/lib/net/http.rb:1632:in `start'
> net-http-0.6.0/lib/net/http.rb:1070:in `start'
> /var/www/discourse/plugins/discourse-ai/lib/completions/endpoints/base.rb:129:in `perform_completion!'
> /var/www/discourse/plugins/discourse-ai/lib/completions/llm.rb:374:in `generate'
> /var/www/discourse/plugins/discourse-ai/lib/personas/bot.rb:90:in `reply'
> /var/www/discourse/plugins/discourse-ai/lib/ai_bot/playground.rb:494:in `reply_to'
> /var/www/discourse/plugins/discourse-ai/app/jobs/regular/create_ai_reply.rb:18:in `execute'
> /var/www/discourse/app/jobs/base.rb:316:in `block (2 levels) in perform'
> rails_multisite-6.1.0/lib/rails_multisite/connection_management/null_instance.rb:49:in `with_connection'
> rails_multisite-6.1.0/lib/rails_multisite/connection_management.rb:21:in `with_connection'
> /var/www/discourse/app/jobs/base.rb:303:in `block in perform'
> /var/www/discourse/app/jobs/base.rb:299:in `each'
> /var/www/discourse/app/jobs/base.rb:299:in `perform'
> sidekiq-7.3.9/lib/sidekiq/processor.rb:220:in `execute_job'
> sidekiq-7.3.9/lib/sidekiq/processor.rb:185:in `block (4 levels) in process'
> sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:180:in `traverse'
> sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:183:in `block in traverse'
> /var/www/discourse/lib/sidekiq/discourse_event.rb:6:in `call'
> sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:182:in `traverse'
> sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:183:in `block in traverse'
> /var/www/discourse/lib/sidekiq/pausable.rb:131:in `call'
> sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:182:in `traverse'
> sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:183:in `block in traverse'
> sidekiq-7.3.9/lib/sidekiq/job/interrupt_handler.rb:9:in `call'
> sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:182:in `traverse'
> sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:183:in `block in traverse'
> sidekiq-7.3.9/lib/sidekiq/metrics/tracking.rb:26:in `track'
> sidekiq-7.3.9/lib/sidekiq/metrics/tracking.rb:134:in `call'
> sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:182:in `traverse'
> sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:173:in `invoke'
> sidekiq-7.3.9/lib/sidekiq/processor.rb:184:in `block (3 levels) in process'
> sidekiq-7.3.9/lib/sidekiq/processor.rb:145:in `block (6 levels) in dispatch'
> sidekiq-7.3.9/lib/sidekiq/job_retry.rb:118:in `local'
> sidekiq-7.3.9/lib/sidekiq/processor.rb:144:in `block (5 levels) in dispatch'
> sidekiq-7.3.9/lib/sidekiq/config.rb:39:in `block in <class:Config>'
> sidekiq-7.3.9/lib/sidekiq/processor.rb:139:in `block (4 levels) in dispatch'
> sidekiq-7.3.9/lib/sidekiq/processor.rb:281:in `stats'
> sidekiq-7.3.9/lib/sidekiq/processor.rb:134:in `block (3 levels) in dispatch'
> sidekiq-7.3.9/lib/sidekiq/job_logger.rb:15:in `call'
> sidekiq-7.3.9/lib/sidekiq/processor.rb:133:in `block (2 levels) in dispatch'
> sidekiq-7.3.9/lib/sidekiq/job_retry.rb:85:in `global'
> sidekiq-7.3.9/lib/sidekiq/processor.rb:132:in `block in dispatch'
> sidekiq-7.3.9/lib/sidekiq/job_logger.rb:40:in `prepare'
> sidekiq-7.3.9/lib/sidekiq/processor.rb:131:in `dispatch'
> sidekiq-7.3.9/lib/sidekiq/processor.rb:183:in `block (2 levels) in process'
> sidekiq-7.3.9/lib/sidekiq/processor.rb:182:in `handle_interrupt'
> sidekiq-7.3.9/lib/sidekiq/processor.rb:182:in `block in process'
> sidekiq-7.3.9/lib/sidekiq/processor.rb:181:in `handle_interrupt'
> sidekiq-7.3.9/lib/sidekiq/processor.rb:181:in `process'
> sidekiq-7.3.9/lib/sidekiq/processor.rb:86:in `process_one'
> sidekiq-7.3.9/lib/sidekiq/processor.rb:76:in `run'
> sidekiq-7.3.9/lib/sidekiq/component.rb:10:in `watchdog'
> sidekiq-7.3.9/lib/sidekiq/component.rb:19:in `block in safe_thread'
> 
> ```
