Короче ситуация такая, с клиента посылается POST запрос. Сервер обрабатывает и выполняет скрипт, пример:
ssh test@test.ru 'command1; command2;'
В представлении оно выполняется обычным os.system(cmd). И если ssh завершается с ошибкой, например Connection refused, то джанго ничего не возвращает POST запросом, а клиент ждет пока таймаут не кончиться :-(. Как лечить такое?
p.s. пробовал subprocess, ситуация точно такая же
p.s.s. все в представлении обернуто в исключение и если бы что-то упало, то сервер все равно должен был вернуть ответ
И если ssh завершается с ошибкой, например Connection refused, то джанго ничего не возвращает POST запросом, а клиент ждет пока таймаут не кончиться :-(. Как лечить такое?
В общем случае отделять вычисления, то есть сразу отдавать юзеру ответ, и сохранять в базе запрос от юзера, а когда он закончится сохранить там результат (или ссылку на результат, если это файл и тд), который юзер сможет затем найти и получить в истории своих запросов.
мало в этом смысла, а если юзер отменит запрос что случится? Проще делать фоновый процесс с обновлением результата асинхронно, чтобы это выглядело как бы синхронно.
У меня как-то получается, что если нужен ssh, то и rsync рано или поздно пригодится, и cp, и еще какой системный софт.
Все равно сервер крутится на линуксе, кроссплатформенность нафиг не нужна, поэтому можно красивым и единобразным sh обойтись. К тому же в питоновой реализации ssh может не оказаться нужных опций; например, paramiko scp не все атрибуты раньше сохранял, скажем, mtime перенести не выходило, как сейчас — не знаю.