Как справиться с fatalError на сервере, написанном на Swift? - PullRequest
0 голосов
/ 26 июня 2018

Я нахожусь в процессе оценки Swift как серверного языка для нетривиального веб-приложения. Причиной выбора Swift является возможность обмена кодом с существующим приложением для iOS, написанным на Swift. Я создал небольшое, в основном IO-связанное приложение CRUD (использующее Vapor 3.0, если это имеет значение) для оценки, и в целом опыт был довольно нейтральным. Я не буду вдаваться в подробности, поскольку они не связаны с этим вопросом.

Язык Swift по своему замыслу не предлагает способа восстановления после фатальных ошибок, подобных тем, которые вы получили бы, развернув Optional со значением nil.

Я не понимаю, как эта характеристика проекта должна обрабатываться на практике в серверных приложениях. Даже если я сделаю так, чтобы в моем коде никогда не происходило принудительного развертывания Optional, например, как я могу верить, что ни один из авторов библиотеки не сделает этого? Как я могу гарантировать, что если поток встретит фатальную ошибку, это не приведет к краху всего сервера с ним?

Итак, мой вопрос: каковы хорошие практики для решения этих ситуаций? Я должен запустить свое приложение через fcgi? Контролировать это каким-то внешним процессом и каким-то образом перезапустить при сбое? Это не может быть приемлемо, например, в сложном приложении с большим количеством серверных состояний и дорогостоящей обработкой, что было бы одной из основных причин выбора быстро скомпилированного языка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...