Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 24, 2013 08:11:10

AngrySpoon
Зарегистрирован: 2013-10-15
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Динамический вывод из CGI-скрипта на страницу браузера

Господа, требуется квалифицированная помощь.

В наличии имеется веб-сервер (с поддержкой CGI), index.html (кнопка), scriptcgi.py. scriptcgi.py работает в течении 30 секунд, каждую секунду производит вывод некоторой информации. В данный момент, при нажатии на кнопку, запускается скрипт и пока он не завершится - вся та информация, которую он выводил, не появляется на странице.
Внимание, вопрос: как реализовать вывод на страницу во время работы скрипта? то есть нужно, чтобы каждую секунду на странице появлялась та информация, которую выводит скрипт. Подсобите примером пж!

Офлайн

#2 Окт. 24, 2013 17:00:56

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

Динамический вывод из CGI-скрипта на страницу браузера

Выключить буфферизацию вывода?

Офлайн

#3 Окт. 24, 2013 17:15:34

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Динамический вывод из CGI-скрипта на страницу браузера

Может быть sys.stdout.flush() поможет

Офлайн

#4 Окт. 25, 2013 09:05:11

AngrySpoon
Зарегистрирован: 2013-10-15
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Динамический вывод из CGI-скрипта на страницу браузера

Не совсем понятно((

import sys
print("Content-Type: text/html")  
print()
print ("<html>")
print ("<head>")
print ("<title>CGI Program</title>")
print ("</head>")
print ("<body>")
print('<textarea rows=25>')
for i in range(9999):
	print(str(i), 'row')
	sys.stdout.flush()
print('</textarea>')
print ("</body>")
print ("</html>")

Вместо print(str(i), ‘row’) должен быть sys.stdout.write() ? Все равно не выводит пока не просчитает все

Отредактировано AngrySpoon (Окт. 25, 2013 09:05:47)

Офлайн

#5 Окт. 25, 2013 14:43:46

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Динамический вывод из CGI-скрипта на страницу браузера

Если вы в терминале запустите скрипт, то текст будет выводится построчно, а значит питон работает так как надо.
Ищите проблему в сервере, cgi-прослойке, тем кто скрипт вызывает.

А вообще cgi прошлый век.

Офлайн

#6 Окт. 28, 2013 08:48:25

AngrySpoon
Зарегистрирован: 2013-10-15
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Динамический вывод из CGI-скрипта на страницу браузера

У меня не возникает сомнений, что питон отрабатывает корректно. Меня интересует, как сделать вывод на страницу в реальном времени. Уже начинаю подумывать на js и ajax… Если каким-нибудь примером реализации подскажете - буду безумно благодарен

Офлайн

#7 Окт. 28, 2013 12:39:37

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Динамический вывод из CGI-скрипта на страницу браузера

AngrySpoon
работает в течении 30 секунд
для “долгих вызовов” лучше использовать асинхронный фреймворк, вот пример на торнадо http://www.py-my.ru/post/501627e2bbddbd261e000000
скрипт запускает программу и по мере появления информации отправляет её в браузер.

кстати можете использовать этот скрипт для запуска своего синхронного scriptcgi.py

Офлайн

#8 Окт. 28, 2013 15:11:05

AngrySpoon
Зарегистрирован: 2013-10-15
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Динамический вывод из CGI-скрипта на страницу браузера

o7412369815963,
именно это и нужно! Спасибо огромное, буду разбираться))

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version