使用日志输出在后台运行python子流程
首先:是的,我已经检查了子流程的文档。我没能找到解决问题的办法,这就是我现在在这里发帖的原因 我的代码:使用日志输出在后台运行python子流程,python,subprocess,Python,Subprocess,首先:是的,我已经检查了子流程的文档。我没能找到解决问题的办法,这就是我现在在这里发帖的原因 我的代码: import os import subprocess import shlex processname = '/usr/bin/python3.5 /usr/bin/asphalt run config.yml' print("checking") def proc_check(command): for line in os.popen("ps xwa"):
import os
import subprocess
import shlex
processname = '/usr/bin/python3.5 /usr/bin/asphalt run config.yml'
print("checking")
def proc_check(command):
for line in os.popen("ps xwa"):
fields = line.split()
pid = fields[0]
process = fields[4]
if len(fields) == 8:
process = fields[4] + " " + fields[5] + " " + fields [6] + " " + fields[7]
if command == process:
# Kill the Process. Change signal.SIGHUP to signal.SIGKILL if you like
os.kill(int(pid), signal.SIGKILL)
# Do something else here
print("Killed Process")
print(pid)
print(process)
return True
return False
if proc_check(processname):
print("all good")
else:
with open('apiServer.log', 'w') as apiLog:
with open('apiServer.err', 'w') as errLog:
command = "cd /root/ProjectAthena/APIServer/" \
"&& . ./venv/bin/activate " \
"&& PYTHONPATH=. asphalt run /root/ProjectAthena/APIServer/config.yml"
ApiHelp = subprocess.Popen(command, stderr=errLog,stdout=apiLog, shell=True)
print("subprocces spawned!")
ApiHelp.communicate()
我想运行一台服务器,为另一个程序提供API。由于服务器必须一直运行(输出到文件),我使用了一个函数来检查我的服务器是否已经在运行
如果是:什么也不做。
如果不是:启动它。
我的控制台告诉我该进程已启动,但遗憾的是,它无法工作或显示为ps aux
我在阅读现有问题时遇到的问题是,我的程序始终在运行,因此没有EOF可供收听。我尝试过的其他方法都阻止了我的进程
也许我需要使用线程(?)。可悲的是,我不是那么熟悉的线程,所以任何剪断将是可怕的
非常感谢您的帮助
谢谢
marvin/Nop0x为什么你不能使用cronjob?你能结束你的后台任务吗?获取数据并重新运行它吗?所以你得到了EOFAbdulRazak——我想把我的程序作为一个包来部署,这就是为什么我想在它里面运行服务器@什么问题我不能结束后台任务,因为我的主程序需要一直运行。请检查这个问题的答案。它可能会回答你的问题。