Тайм-аут сервера Heroku для приложения Shopify

У меня есть приложение Shopify на сервере Heroku. Один из вызовов, которые я делаю в это приложение, - это POST, в котором я отправляю коллекцию, массив продуктов и массив клиентов. Оттуда я делаю несколько вызовов API для Shopify Admin, чтобы создать все эти вещи. В настоящее время это отлично работает, если нужно создать всего несколько продуктов и клиентов. Однако Heroku имеет ограничение в 30 секунд. Это не может быть изменено. Единственный способ обойти это - послать "Heartbeat", и тогда вы получите дополнительные 55 секунд. Я не понял, как отправить "сердцебиение" обратно и продолжить. Я попробовал вернуть статус 100, но это не сработало. Кроме разделения на несколько вызовов. Есть ли способ лучше?


person Ian Brown    schedule 19.07.2018    source источник


Ответы (2)


Вы плохо проектируете свое приложение. Если вы отправляете POST в свое приложение, организуете входящие данные, отправляете их в фоновое задание для обработки, а затем возвращаете 200 OK обратно в свое приложение, если вы использовали XHR, или всплываете страницу в своем приложении со словами «Спасибо. , мы работаем над вещами "...

Таким образом, вы держите своего торгового клиента в курсе, все работает нормально, и у вас нет шансов выйти из строя после 30-секундного тайм-аута.

person David Lazar    schedule 19.07.2018
comment
Думаю, это то, что мне нужно выяснить. Отправка данных в фоновое задание. Не так уж и важно. Просто никогда раньше не делал этого в Ruby. - person Ian Brown; 20.07.2018
comment
Обработка фоновых заданий довольно проста с помощью Resque, DelayedJob и других драгоценных камней. Архитектура приложения не зависит от языка сценариев, поэтому то, как вы решите создать приложение, часто намного важнее, чем язык сценариев, на котором вы его пишете. - person David Lazar; 20.07.2018

Не знаю, каков будет рубиновый ответ, но статья Heroku по этому поводу находится здесь и указывает, что вам просто нужно отправлять несколько байтов после каждой операции, чтобы получить дополнительные 55 с на операцию записи.

Я предполагаю, что у ruby ​​есть способ получить доступ к потоку ответов, поэтому даже отправленный пробел может помочь - таким образом вы можете отправить кучу пробелов, а затем окончательный ответ JSON.

person bknights    schedule 19.07.2018