Excepción de trabajo: Net::ReadTimeout durante el uso de herramienta personalizada

He configurado una herramienta personalizada para usar Perplexity Deep Research (lo que puede tardar unos minutos), lo que creo que está causando este error. ¿Hay alguna solución alternativa además de crear un plugin personalizado para extender el tiempo de espera http de Discourse AI?

Backtrace
Message (3 copies reported)

Job exception: Net::ReadTimeout

Backtrace

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 (2 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'