如何创建一个命令行界面,使其作为后台进程持续存在,并且仅在输入特定命令时执行命令?以下是伪代码:
def startup():
# costly startup that loads objects into memory once in a background process
def tear_down()
# shut down; generally not needed, as main is acting like a service
def main():
startup()
# pseudo code that checks shell input for a match; after execution releases back to shell
while True:
usr_in = get_current_bash_command()
if usr_in == "option a":
# blocking action that release control back to shell when complete
if usr_in == "option b":
# something else with handling like option a
if usr_in == "quit":
# shuts down background process; will not be used frequently
tear_down()
break
print("service has been shut down. Bye!")
if __name__ == "__main__":
# run non-blocking in background, only executing code if usr_in matches commands:
main()
注意这不是什么:
- argparse或click的典型示例,它运行(阻塞)python进程,直到所有命令完成
- 每个命令的一系列一次性脚本;它们利用在后台进程中使用startup()示例化的内存中的对象
- 一个完全不同的shell,比如ipython我想把它集成到一个标准的shell中,比如bash。
我很熟悉click,argparse,subprocess等,据我所知,它们接受单个命令并阻塞直到完成。我特别寻找与后台进程交互的东西,以便昂贵的启动(加载对象到内存中)只被处理一次,我看过python daemon和service包,但是我不确定这些是否也是正确的工具。
我该怎么做呢?我觉得我不知道该去谷歌什么才能得到我需要的答案...
1条答案
按热度按时间v8wbuo2f1#
这只是一种方法...(还有其他方法,这只是一种非常简单的方法)
可以使用服务器作为长时间运行的进程(然后使用init systemV或upstart将其转换为服务)
努力工作者.py
那么你的客户端可以对你的“服务”发出简单的HTTP请求
瘦客户端.sh