Есть идея написать веб приложение для работы с файлами, т.е. его суть в переваривании (копирование, перемещение, архивирование) различных файлов на сервере. При этом хочу прикрутить логирование всех действий в БД с последующим составлением отчетов и статистики, поэтому будет нужен веб-интерфейс. Думаю попробовать реализовать всё на Django, т.к. в данный момент хочу изучить его. Но сразу есть вопросы.
1) как запускать обрабатывающие функции для файлов? На ссылки вешать функции из view? Но они должны возвращать HttpResponse. Логично в неём возвращать результаты выполнения функции, но тут возникает второй вопрос.
2) если попадутся файлы большого объема, пока функция будет их обрабатывать, весь веб-сервис будет висеть. Тут наверное нужна асинхронность?
Понимаю, что вопросы глупые, но только делаю первые шаги.
Раздели весь свой вопрос. И начинай делать по очереди. А когда не получится задавай еще вопросы. В этом вопросе отсутствует суть.... просто бери и делай.
в HTML шаблоне определяю ссылку на эту функцию <a href="{% url 'files:arch' %}">Arch</a>
Запускаю всё это безобразие, и функция конечно отрабатывает, но процесс занимает несколько минут, и в этот момент весь сервис естественно виснет. Понимаю, что скорее всего нужно смотреть в сторону асинхронности, но как её сюда прикрутить? При этом, если я создаю разом несколько архивов, хотелось бы пользователю выдавать какую то информацию о ходе процесса. Как решить данную проблему?
По нормальному НИКАК. Такими вещами занимаются мощные серверы, а не домашние пни. А выдача информации пользователю идет через ajax. django это веб фреймворк. И для работы с вэб он справился. А вот архивирование это не его задача. Если он умеет это еще не значит, что он должен. У архиваторов есть командная строка вот её и мучай. А лучше в батничек сохрани и запускай. Вот мануал Куллер конечно взлетать начнет, но веб сервис не упадет и думаю даже не подвиснет. И я кстати в Django ещё не совался, так что мне код можешь не слать..
Запускаю всё это безобразие, и функция конечно отрабатывает, но процесс занимает несколько минут, и в этот момент весь сервис естественно виснет.
Нет, не весь. В этот момент виснет конкретный тред. Современные wsgi сервера пускают сервер в несколько потоков.
Другое дело если все потоки так повиснут.
Alexa2007, если не совался, зачем в советчики лезешь? Архивировать можно в фоне, не блокируя процесс.