Вы можете использовать «двойную вилку» для запуска вашего кода в новом фоновом процессе, не привязанном к старому. См., Например, этот рецепт с более пояснительными комментариями, чем вы могли бы хотеть.
Я бы не рекомендовал это как основной способ запуска фоновых задач для веб-сайта. Например, если ваш Python встроен в процесс Apache, вы будете разветвляться больше, чем хотите. Лучше вызывать демона отдельно (только у аналогичного пользователя с низким уровнем привилегий).
Как запустить скрипт один раз через сервер Apache, как мне остановить его выполнение?
Ваш второй форк записывает номер процесса (pid) процесса-демона в файл, а затем считывает pid из этого файла и отправляет ему сигнал завершения (os.kill(pid, signal.SIG_TERM)
).
Я в замешательстве?
Вот в чем вопрос! Я предполагаю, что вы пытаетесь создать фоновый процесс, который через другой порт отвечает веб-интерфейсу для какого-то необычного сетевого сервиса. Если вы просто говорите об ответе на обычные веб-запросы, вы не должны этого делать, вам следует полагаться на Apache, который обрабатывает ваши сокеты и обслуживает по одному запросу за раз.