Проверьте, чтобы видеть, работает ли сценарий Python

Я решил это с этим, но должен быть лучший способ!

<a class="btn btn-primary ${page==pages||pages==0?'disabled':''}" href="javascript:page(${page + 1});">Next</a>

<script>
location.queryString = {};
location.search.substr(1).split("&").forEach(function (pair) {
    if (pair === "") return;
    var parts = pair.split("=");
    location.queryString[parts[0]] = parts[1] &&
        decodeURIComponent(parts[1].replace(/\+/g, " "));
});
function page(p) {
    window.location.queryString.page = p;
    window.location.replace(window.location.pathname + "?" + $.param(window.location.queryString));
}
</script>
90
задан shgnInc 13 January 2019 в 09:44
поделиться

4 ответа

Перетащите куда-нибудь pid-файл (например, / tmp). Затем вы можете проверить, запущен ли процесс, проверив, существует ли PID в файле. Не забудьте удалить файл при чистом завершении работы и проверить его при запуске.

#/usr/bin/env python

import os
import sys

pid = str(os.getpid())
pidfile = "/tmp/mydaemon.pid"

if os.path.isfile(pidfile):
    print "%s already exists, exiting" % pidfile
    sys.exit()
file(pidfile, 'w').write(pid)
try:
    # Do some actual work here
finally:
    os.unlink(pidfile)

Затем вы можете проверить, запущен ли процесс, проверив, является ли содержимое /tmp/mydaemon.pid существующим процессом. Monit (упомянутый выше) может сделать это за вас, или вы можете написать простой сценарий оболочки, чтобы проверить его для вас, используя код возврата из ps.

ps up `cat /tmp/mydaemon.pid ` >/dev/null && echo "Running" || echo "Not running"

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

88
ответ дан 24 November 2019 в 06:56
поделиться

Я большой поклонник Supervisor для управления демонами. Он написан на Python, поэтому существует множество примеров того, как взаимодействовать с ним или расширять его с помощью Python. Для ваших целей API управления процессом XML-RPC должен работать хорошо.

2
ответ дан 24 November 2019 в 06:56
поделиться

Существует множество вариантов. Одним из методов является использование системных вызовов или библиотек Python, которые выполняют такие вызовы для вас. Другой - просто вызвать такой процесс, как:

ps ax | grep processName

, и проанализировать вывод. Многие люди выбирают этот подход, на мой взгляд, это не обязательно плохой подход.

4
ответ дан 24 November 2019 в 06:56
поделиться

There are very good packages for restarting processes on UNIX. One that has a great tutorial about building and configuring it is monit. With some tweaking you can have a rock solid proven technology keeping up your daemon.

10
ответ дан 24 November 2019 в 06:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: