Хостинг-провайдеры Node.js, которые не вызывают ошибку тайм-аута

Я загрузил свое приложение на Heroku.

Поскольку одна функция занимает много времени, ответ не отправляется в течение некоторого количества минут.

Между тем, Heroku выдает ошибку тайм-аута (ошибка H12) после 30 секунд отсутствия ответа.

Я пытаюсь решить эту проблему, но она становится все более сложной, с socket.io и т. д.

Существуют ли провайдеры, которые не выдадут эту ошибку и позволят клиенту ждать бесконечно?

Вот что об этом говорит Heroku: devcenter.heroku.com/articles/request-timeout. Вы застряли на 30 секундах, если не напишите в ответ хоть один байт, чтобы он оставался в живых. Обращение к другим поставщикам было бы не по теме переполнения стека, поскольку это не проблема программирования, и он запрашивает рекомендации по стороннему сервису - оба из которых делают это вне темы здесь.

jfriend00 15.09.2018 19:31

Вероятно, это связано с вашим другим вопросом, в котором вы также не включаете достаточный контекст кода: stackoverflow.com/questions/52346849/…

jfriend00 15.09.2018 19:45

на самом деле я попытался установить некоторые заголовки, чтобы увидеть, будет ли heroku считать это ответом, но это не сработало. Что означает запись одного байта? Проблема заключается в HTTP, вы не можете отправить два ответа на один запрос. Я отвечал с помощью html-файла, а затем отправлял текстовый файл, но получил ошибку НЕВОЗМОЖНО ОТПРАВИТЬ ЗАГОЛОВКИ ПОСЛЕ ОНИ ОТПРАВЛЯЮТСЯ. Итак, как эта запись байта может работать периокально? Где ты это пишешь?

user1584421 15.09.2018 19:47

Пожалуйста, избегайте ненормативной лексики здесь. Я понимаю, что вы расстроены, но проклятия не решат вашу проблему.

Chris 15.09.2018 20:55

Кроме того, не по теме просить нас найти или порекомендовать сторонний ресурс, например веб-хостинг. То, о чем вы спрашиваете жестяная банка, - это код, который так долго отправляет ответ. Если вы поделитесь этим с нами, мы сможем помочь вам найти хорошее решение этой проблемы. Не так много ситуаций, когда приемлемо ждать ответа от сервера более 30 секунд. Почему это длится так долго?

Chris 15.09.2018 20:57

ДО того, как вы отправили запрос, но после того, как вы установили какие-либо заголовки, вы можете сделать res.write(" ") для периодической записи байта в ответ, чтобы поддерживать keroku в живых. Насколько это практично в вашем конкретном случае, я понятия не имею, потому что вы не показываете реальный контекст проблемы, которую пытаетесь решить.

jfriend00 15.09.2018 21:05

Вместо того, чтобы найти нового провайдера, который позволит вам позволить клиенту посидеть несколько минут, почему бы вам не отправить эту работу на фоновый процесс? Вы по-прежнему можете использовать Heroku, это более простое в реализации решение, которое не заставляет пользователей сидеть и барабанить пальцами в течение нескольких минут.

RangerRanger 15.09.2018 23:01

@Chris Спасибо, Крис. Но код, который занимает так много времени, не является ошибкой. Это занимает много времени, потому что он обрабатывает много данных.

user1584421 17.09.2018 16:51

@ jfriend00 Спасибо! Если это станет решением, пришлите мне свой PayPal, и я куплю вам пива!

user1584421 17.09.2018 16:52

@BradleyJohnson По завершении задания клиент отправляет текстовый файл в ответ. Как это может с этим работать? На сервере Heroku нет фактического сохранения файлов, я просто устанавливаю несколько тегов, беру массив из памяти и использую его как текстовый файл.

user1584421 17.09.2018 16:53

@ user1584421, я не говорю, что вы не можете обрабатывать много данных. Я говорю, что прося браузер (и пользователя) дождаться этих данных синхронно,, вероятно, неправильный способ справиться с этим. Поставьте задание в очередь и обработайте его асинхронно или быстро загрузите страницу и используйте WebSockets или веб-воркеров или что-то еще, чтобы отправить данные в браузер, когда он будет готов, длинный опрос, черт возьми, даже используйте jQuery для проверки связи с сервером каждые 30 секунд ... Это также что предлагает Брэдли Джонсон.

Chris 17.09.2018 16:57

Это то, что я сейчас пытаюсь сделать с помощью socket.io. Хотя я не знал, что jquery может это сделать.

user1584421 17.09.2018 16:59
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
12
44
0

Другие вопросы по теме