Обработчик событий Python - PullRequest
0 голосов
/ 27 июля 2011

Я пытаюсь реализовать обработчик событий сортировки. Я пытаюсь собрать примеры сетевых снимков, используя внешний процесс, используя Popen, и он записывает файл XML. Я анализирую XML-файл, чтобы собрать всю необходимую мне информацию. Но я не хочу завершать процесс, пока количество пакетов не достигнет определенного предела.

def getPacketCount(xmlfile, count, pid):
    while 1:
        try:
            parser = minidom.parse(xmlfile)
            wlan = parser.getElementsByTagName('wireless-network')[0]
            pkt = wlan.getElementsByTagName('packets')[1]
            packetCount = pkt.getElementsByTagName('total').childNodes[0].data
            if packetCount>count:
                #Call event handler to kill process with given pid.
        except AttributeError, TypeError:
            print "AttributeError: Accessing file again"`

В этом подходе много производительности (поскольку он постоянно проверяет файл)? Как заставить эту функцию работать в фоновом режиме (как демон?) Имеет ли смысл использовать многопроцессорный модуль? Эффективно ли обернуть Popen в функцию и вызвать Multiprocessing?
Note: I am implementing this with Django to handle database operations.

1 Ответ

1 голос
/ 27 июля 2011

django, будучи веб-фреймворком, не подходит для событийного программирования;он гораздо лучше подходит для обычного цикла запрос / ответ http.

Возможно, имеет смысл сделать программу опроса файлов отдельным скриптом (возможно, с помощью INotify, чтобы избежать необходимости частого опроса файла).), а затем он может уведомить крупное веб-приложение, сделав для этого регулярный http-запрос к ресурсу или обновив базовую базу данных, используемую приложением.

...