Интерфейс django для запуска вывода подпроцесса в окно браузера - PullRequest
1 голос
/ 06 июля 2011

У меня в основном бэкэнд-программа написана на Perl. Эта программа передает некоторые настройки на сетевое устройство. Это дает много информации, и я хочу, чтобы пользователи могли видеть программу во время ее работы. До сих пор это было легко, так как я работал с терминала.

Сейчас я пытаюсь написать приложение для Django. По сути, я хочу, чтобы пользователь нажал «Отправить», браузер перенес их на новую страницу, и на этой новой странице я хочу, чтобы пользователь видел текстовый вывод этой программы во время ее работы.

Мне удалось запустить программу в фоновом режиме, используя: http://docs.python.org/library/subprocess.html

Скажите, что ниже простой запрос. На веб-странице ответа я хочу видеть результаты работы программы в режиме реального времени или, по крайней мере, обновлять ее, чтобы видеть последние выходные данные каждые несколько секунд (на данный момент это может быть работа)

def config(request):
    builder_Config_list = Config.objects.all().order_by('-generated_date')[:100]
    if 'hostname' in request.POST and request.POST['hostname']:
        hostname = request.POST['hostname']
        command = "path/to/builder.pl --router " + hostname
        result = subprocess.Popen(command.split(), stdout=subprocess.PIPE)
        return render_to_response('config/config.html', {'result':result, } )

1 Ответ

2 голосов
/ 06 июля 2011

Вы можете прочитать вывод подпроцесса следующим образом ...

pipe = subprocess.Popen(command.split(), stdout=subprocess.PIPE)
result = pipe.stdout.read() # this is the output of the process
return render_to_response('config/config.html', {'result': result})

Однако вы сможете увидеть результат только после завершения процесса.Если вы хотите увидеть результат при запуске программы, это будет немного сложнее.Я полагаю, что это можно сделать, поместив вызов подпроцесса в отдельный процесс или поток, запустив процесс записи в файл или очередь сообщений, а затем прочитав из этого файла, на ваш взгляд.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...