【问题标题】:Running python service as background service将python服务作为后台服务运行
【发布时间】:2018-04-18 17:57:06
【问题描述】:

这是 python 代码,我如何仅使用python 1.py 命令将应用程序作为守护进程启动?

import eventlet
from eventlet import wsgi



def hello_world(env, start_response):
    if env['PATH_INFO'] != '/':
        start_response('404 Not Found', [('Content-Type', 'text/plain')])
        return ['Not Found\r\n']
    start_response('200 OK', [('Content-Type', 'text/plain')])
    return ['Hello, World!\r\n']

wsgi.server(eventlet.listen(('', 8090)), hello_world)

【问题讨论】:

  • 这不是python问题,你的操作系统负责启动进程。您使用的是哪个操作系统?
  • Centos,但我不想在机器启动时这样。当我运行这个应用程序时,它必须作为后台进程启动。
  • cronjob 能满足您的需求吗? 相关信息可见here。我从个人经验中知道在 cron 作业中运行 python 脚本可能会很痛苦。一种方法是创建一个 bash 脚本,该脚本调用您的 python 脚本,说明文件的完整路径。
  • 当我在 python 应用程序中导入守护进程运行程序时,会将应用程序作为守护进程运行,但是当我尝试使用 wsgi 服务器时它没有发生。

标签: python python-2.7 python-3.x centos


【解决方案1】:

Supervisor 是管理长时间运行的后台进程的绝佳实用程序。

安装supervisor,创建一个配置文件,指定您要运行的命令、应该运行它的用户、日志位置等。

然后您可以使用 sudo supervisorctl start {{ name }} 启动服务,并根据需要使用类似命令停止它。

【讨论】:

    【解决方案2】:

    在 CentOS 中启动进程有多种不同的方法,请自行选择哪一种以您喜欢的方式解决问题。

    1. 打开一个终端,运行 python 1.py 并忘记它,直到你关闭机器
    2. 打开终端,运行nohup python 1.py & 并关闭终端。即使会话结束,Nohup 也会使程序保持活动状态。如果需要杀掉,需要在进程列表中用ps -ax找到,用kill <process_id>杀掉
    3. 阅读有关deamon 函数的文档并使用它调用您的脚本
    4. 我相信还有更多

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-05
      • 1970-01-01
      • 2023-03-30
      • 2019-01-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多