从Python启动Linux守护程序

时间:2013-01-07 01:31:38

标签: python django linux

快速提问,

我正在使用Django内部的python脚本从网页启动一个linux守护进程(动作)。当我使用以下内容时:

def restartRecord():
    #restart the service
    config_file = os.path.join(os.path.abspath(os.path.dirname(__file__)), 'recorder/config/motion.conf')
    p = subprocess.call(['motion', '-c', config_file])
    return True

它启动守护进程没有问题,但如果我正在使用从django开发服务器(端口8000)运行它,它也会占用端口。这是正常行为吗? - 为什么启动守护进程会占用该端口?我可以通过停止开发服务器并尝试再次启动它来测试它。

有没有更好的方法来启动此服务?

干杯, 本

2 个答案:

答案 0 :(得分:0)

p = subprocess.call(['motion', '-c', config_file])是一个同步调用,意味着页面加载将被阻止,直到“动作”退出(或者自行执行fork-daemonizes。)

Django开发服务器是单线程的,因此在等待此请求成功时不会提供任何其他请求。

您可能需要考虑使用unix start-stop-daemon实用程序将调用包装为动作。

答案 1 :(得分:0)

似乎在apache下工作正常,这是主要的事情。谢谢你的回复。