快速提问,
我正在使用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)运行它,它也会占用端口。这是正常行为吗? - 为什么启动守护进程会占用该端口?我可以通过停止开发服务器并尝试再次启动它来测试它。
有没有更好的方法来启动此服务?
干杯, 本
答案 0 :(得分:0)
p = subprocess.call(['motion', '-c', config_file])
是一个同步调用,意味着页面加载将被阻止,直到“动作”退出(或者自行执行fork-daemonizes。)
Django开发服务器是单线程的,因此在等待此请求成功时不会提供任何其他请求。
您可能需要考虑使用unix start-stop-daemon
实用程序将调用包装为动作。
答案 1 :(得分:0)
似乎在apache下工作正常,这是主要的事情。谢谢你的回复。