Связь с серверной работой с веб-сервера или веб-страницы - PullRequest
0 голосов
/ 01 октября 2009

У меня есть «устройство» (из-за отсутствия лучшего описания) под управлением Linux.

В настоящее время я ssh в поле для запуска заданий. Это не достаточно дружелюбно для моих пользователей, поэтому я собираю простой веб-интерфейс для запуска сценария. Задание длится от 10 секунд до нескольких часов. Веб-интерфейс должен отражать статус задания.

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

Для текущей задачи я рассматриваю порождение задания из cgi и иногда проверяю файл состояния, который задание записывает по мере его выполнения или выхода.

Мой вопрос: есть ли лучший (более простой / более быстрый для записи / более надежный) способ сделать это? Существуют ли какие-либо шаблоны или инструменты, о которых мне следует знать?

(Решения Python идеальны.)

Спасибо.

Ответы [ 2 ]

2 голосов
/ 01 октября 2009

Я делаю это в ряде проектов. Веб-приложение (в основном Python / CGI), которое порождает отдельный скрипт Python (с использованием подпроцесса), который мгновенно демонизирует себя для выполнения работы Затем веб-приложение продолжает выдавать запросы AJAX для проверки хода процесса демона (для связи я использую простые txt-файлы, база данных, вероятно, будет лучше). Одним приятным штрихом является отправка демона по электронной почте конечному пользователю после его завершения (со ссылкой для получения результатов). Таким образом, пользователь может закрыть свой веб-браузер на тех работах, которые занимают часы.

0 голосов
/ 01 октября 2009

Я не уверен, правильно ли я понял вашу проблему, но я предполагаю, что у вас есть несколько «заданий», которые могут выполняться одновременно, и хотите, чтобы они отображались на веб-странице независимо от того, завершены они или нет?

При запуске задания веб-страница (например, python & mod_wsgi) запускает скрипт python, который вводит задание, скажем, в базу данных sqlite, и запускает задание, когда задание завершается, скрипт обновляет запись для задание, чтобы оно было помечено как завершенное

Страница состояния будет просто показывать материал из sqlite.

То, что вы хотите поместить в БД в дополнение к идентификатору задания и, возможно, время начала / окончания, зависит от того, что вы хотите показать на веб-странице статуса задания

На sidenote - если "задания" являются компиляциями, встречайте Hudson

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