Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 20, 2010 01:00:37

module
От:
Зарегистрирован: 2010-09-20
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

как сделать os.dup2 и Popen из вод mod_wsgi?

имеется простенький django (v0.96) сайтик который крутится на связке Ubuntu Hardy 8.04 apache2 + mod_wsgi.
хочется сделать одну вещь:
при заходе на определённый URL помимо выплёвывания в браузер сообщения “Hello World”
параллельно на сервере будет запускаться команда (или несколько команд), стандартный вывод которой должен перенаправляться в заранее указанный файлик.

собственно в той же связке но с mod_python всё получилось примерно так:
views.py

from django.http import HttpResponse
from subprocess import Popen

import threading
import os
import sys

import my_helper
def external(*args,**kwargs):
pid = os.fork()
if pid:
os.waitpid(pid,0)
print "Done"
return
log = open("/var/www/ext.log","a+",0)
log.truncate()


os.dup2(log.fileno(),1)
os.dup2(log.fileno(),2)

proc = Popen("ps aux",shell=True,bufsize=0)
proc.wait()
log.flush()
helper.one()

log.flush()
log.close()
sys.exit()

def start():
thread = threading.Thread(target=external)
thread.setDaemon(True)
thread.start()
import time
def my_view(request):
start()
return HttpResponse('Hello, world!')
helper.py:
from subprocess import Popen
def one():
proc = Popen("cat /proc/%s/maps" %(os.getpid()),shell=True,bufsize=0)
proc.wait()
собственно в связке с mod_python вместо mod_wsgi всё проходит нормально - я вижу вывод px aux и Popen метода one.

а вот с mod_wsgi - в моём лог-файле я вижу только вывод ps aux, но не вижу вывода функции one.

у кого нибудь есть идеи?



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version