Я работаю над довольно простым CGI с Python.Я собираюсь поместить его в Django и т. Д. Общая настройка довольно стандартна на стороне сервера ( т.е. вычисления выполняются на сервере):
- Пользователь загружает файлы данных инажимает кнопку «Выполнить»
- Сервер выполняет параллельные закулисные задания, используя большое количество оперативной памяти и мощности процессора.Спустя ~ 5-10 минут (средний вариант использования) программа завершает работу, создав файл ее вывода и несколько файлов рисунков .png.
- Сервер отображает веб-страницу с цифрами и некоторым кратким текстом
Я не думаю, что сотни или тысячи людей будут использовать это одновременно;тем не менее, поскольку для выполнения вычислений требуется изрядное количество оперативной памяти и мощности процессора (каждый экземпляр выполняет самую ресурсоемкую задачу с использованием Pool
Python).
Мне было интересно, знаете ли вы, стоит ли этопроблема в использовании системы очередей.Я наткнулся на модуль Python beanstalkc
, но на странице он сказал, что это система очередей в памяти.
Что означает «в памяти» в этом контексте?Я беспокоюсь о памяти, а не только о времени процессора, и поэтому хочу убедиться, что одновременно выполняется только одно задание (или хранится в ОЗУ, независимо от того, получает ли оно время ЦП).
Кроме того, я былпытаясь решить, должна ли
- страница результатов (обслуживаемая CGI) сообщать вам о своей позиции в очереди (до тех пор, пока она не запустится, а затем отобразит фактическую страницу результатов)
ИЛИ
- пользователь должен отправить свой адрес электронной почты в CGI, который отправит им ссылку на страницу результатов, когда она будет завершена.
Как вы думаете, что является подходящей методологией проектирования для CGI с небольшим движением для такой проблемы?Совет очень ценится.