Как пропустить ожидание ответа от части db при сохранении данных в Django? - PullRequest
0 голосов
/ 25 мая 2020

Проблема в том, что мне нужно пересчитать все данные, которые у меня есть в db, после сохранения нового экземпляра. Вычисление занимает не более 2 минут, что нормально для моей задачи. У меня есть собственный метод сохранения, и все, что мне нужно сделать, это go через все элементы и item.save(), но, как я уже сказал, это занимает более 30 se c, поэтому у меня проблемы с «таймаутом запроса» (с использованием Heroku кстати). Есть идеи, как с этим бороться?

1 Ответ

0 голосов
/ 25 мая 2020

@ Uladzislau Malinouski, вы можете использовать асинхронные инструменты, например celery.

Принцип работы состоит в том, что задача, на выполнение которой требуется значительное количество времени, может быть оформлена как асинхронная задача, а вычисления могут выполняться в фоновом режиме. Вы можете настроить сельдерей на Heroku, следуя этому руководству - https://devcenter.heroku.com/articles/celery-heroku.

Если вы используете бесплатную учетную запись и не предоставили данные своей карты на Heroku, это будет невозможно для вы должны добавить аддон для брокера, который используется вместе с сельдереем Redis, Rabbitmq et c. В таких случаях вы можете следовать этому руководству, чтобы запланировать асинхронную задачу на Heroku - https://devcenter.heroku.com/articles/clock-processes-python

...