有没有办法使python子进程在运行一次脚本后不会终止?
考虑以下两个文件有没有办法使python子进程在运行一次脚本后不会终止?,python,subprocess,Python,Subprocess,考虑以下两个文件 script\u to\u start\u other\u script.py import schedule import time import subprocess def run_again(): subprocess.call(["bash", "-c", "" + " nohup python script_to_be_started.py > /dev/null 2>&1&"]) if __name__== "__
script\u to\u start\u other\u script.py
import schedule
import time
import subprocess
def run_again():
subprocess.call(["bash", "-c", "" + " nohup python script_to_be_started.py > /dev/null 2>&1&"])
if __name__== "__main__":
schedule.every(5).seconds.do(run_again)
while True:
schedule.run_pending()
time.sleep(1)
pass
import logging
from logging.handlers import TimedRotatingFileHandler
# Init logger
logger = logging.getLogger('test_log')
hdlr = logging.handlers.TimedRotatingFileHandler('./test_log.log', when='h', interval=10)
formatter = logging.Formatter('%(asctime)s %(levelname)s : %(message)s')
hdlr.setFormatter(formatter)
logger.addHandler(hdlr)
logger.setLevel(logging.INFO)
logger.info('Beginning of test_log.py')
import schedule
def run_again():
logger.info('I am being called')
if __name__== "__main__":
schedule.every(5).seconds.do(run_again)
while True:
logger.info('how many time am I being called')
schedule.run_pending()
time.sleep(1)
pass
脚本要启动。py
import schedule
import time
import subprocess
def run_again():
subprocess.call(["bash", "-c", "" + " nohup python script_to_be_started.py > /dev/null 2>&1&"])
if __name__== "__main__":
schedule.every(5).seconds.do(run_again)
while True:
schedule.run_pending()
time.sleep(1)
pass
import logging
from logging.handlers import TimedRotatingFileHandler
# Init logger
logger = logging.getLogger('test_log')
hdlr = logging.handlers.TimedRotatingFileHandler('./test_log.log', when='h', interval=10)
formatter = logging.Formatter('%(asctime)s %(levelname)s : %(message)s')
hdlr.setFormatter(formatter)
logger.addHandler(hdlr)
logger.setLevel(logging.INFO)
logger.info('Beginning of test_log.py')
import schedule
def run_again():
logger.info('I am being called')
if __name__== "__main__":
schedule.every(5).seconds.do(run_again)
while True:
logger.info('how many time am I being called')
schedule.run_pending()
time.sleep(1)
pass
每当我运行script\u to\u start\u other\u script.py
,script\u to\u be\u start.py将只运行整个脚本一次
logger.info('how many time am I being called')
即使存在while循环,也只打印一次。有没有办法让脚本继续运行?我尝试了第一个脚本,它继续运行第二个脚本。试着运行脚本以便启动.py
,并确保它运行正常。第二个脚本运行到log语句之前的一个原因可能是缺少导入
导入时间
因此,在打印日志消息之后,第二个脚本将由于缺少导入而自动崩溃
我假设您只剥离了日志记录内容,但缺少的时间导入实际上是您代码的一部分 如何读取衍生进程的输出?我使用import logging
中的记录器,即使在添加缺少的import
s并初始化记录器之后,您的代码也不会生成输出。你能编辑你的两个脚本,让它们实际运行并重现你的问题吗?是的,让我给你完整的脚本