Я использую рамки django и сталкивался с некоторыми проблемами производительности.Совместимость Django с сельдереем
В моем представлении очень тяжелый (который стоит около 2 секунд). И назовем его тяжелым().
Клиент использует ajax для отправки запроса, который перенаправляется на heavy() и ожидает ответа json.
Плохо то, что, думаю, heavy() не является одновременным. Как показано на рисунке ниже, если есть два запроса, перенаправленных на heavy() одновременно, нужно подождать еще один. Другим словом, heavy() является серийным: он не может принять другой запрос перед возвратом из текущего запроса. Наблюдение проверено и проверено на моей локальной машине.
Я пытаюсь сделать функции в views.py одновременно и асинхронный. В идеале, когда есть два запроса, поступающие в heavy(), heavy() должен отбросить задание на какого-то удаленного работника с обратным вызовом и вернуться. Затем heavy() может обрабатывать другой запрос. Когда задача будет выполнена, обратный вызов может отправить результаты обратно клиенту. Логика демонстрируется, как показано ниже:
Однако есть проблема: если тяжелая() хочет, чтобы обработать другой запрос, он должен вернуться; но если он что-то вернет, структура django отправит клиенту (поддельный) ответ, и клиент может не дождаться другого ответа. Более того, поддельный ответ не содержит правильных данных. Я искал метод stackoverflow и нашел менее полезные советы. Интересно, кто-нибудь пробовал это и знает хороший способ решить эту проблему.
Спасибо,
Какой сервер вы используете? Сервер разработки Django? –