当前位置: 首页 > 面试题库 >

我可以将Python脚本作为服务运行吗?

法镜
2023-03-14
问题内容

是否可以在网络服务器上将Python脚本作为后台服务运行?我想这样做以进行套接字通信。


问题答案:

您可以使其成为守护程序。有一个PEP可以提供更完整的解决方案,但是我发现这样做很好。

import os, sys

def become_daemon(our_home_dir='.', out_log='/dev/null', err_log='/dev/null', pidfile='/var/tmp/daemon.pid'):
    """ Make the current process a daemon.  """

    try:
        # First fork
        try:
            if os.fork() > 0:
                sys.exit(0)
        except OSError, e:
            sys.stderr.write('fork #1 failed" (%d) %s\n' % (e.errno, e.strerror))
            sys.exit(1)

        os.setsid()
        os.chdir(our_home_dir)
        os.umask(0)

        # Second fork
        try:
            pid = os.fork()
            if pid > 0:
                # You must write the pid file here.  After the exit()
                # the pid variable is gone.
                fpid = open(pidfile, 'wb')
                fpid.write(str(pid))
                fpid.close()
                sys.exit(0)
        except OSError, e:
            sys.stderr.write('fork #2 failed" (%d) %s\n' % (e.errno, e.strerror))
            sys.exit(1)

        si = open('/dev/null', 'r')
        so = open(out_log, 'a+', 0)
        se = open(err_log, 'a+', 0)
        os.dup2(si.fileno(), sys.stdin.fileno())
        os.dup2(so.fileno(), sys.stdout.fileno())
        os.dup2(se.fileno(), sys.stderr.fileno())
    except Exception, e:
        sys.stderr.write(str(e))


 类似资料:
  • 问题内容: 我想在CENTOS服务器中运行python脚本: 我正在使用它,并且工作正常…问题是:即使关闭ssh控制台后,如何保持此脚本运行? 问题答案: 我使用此代码来守护我的应用程序。它允许您使用以下命令来编写脚本。 除此之外,我还有一个init.d脚本来控制我的服务。这使您可以在操作系统启动时自动启动服务。 这是一个简单的示例,可以助您一臂之力。只需将代码移到一个类中,然后从内部的函数中调用

  • 问题内容: 我正在草拟一组程序的体系结构,这些程序共享存储在数据库中的各种相互关联的对象。我希望其中一个程序充当服务,为这些对象的操作提供更高级别的接口,而其他程序则通过该服务访问对象。 我目前的目标是将Python和Django框架作为实现该服务的技术。我很确定自己知道如何守护Linux中的Python程序。但是,这是系统应支持Windows的可选规格。我几乎没有Windows编程经验,也没有W

  • 问题内容: 我想使用Java Scripting API 从Java运行kotlin代码作为脚本,类似于javascript: 或类似的API。 问题答案: 是的,可以从Kotlin 1.1开始:http : //kotlinlang.org/docs/reference/whatsnew11.html#javaxscript- support 此配置将Kotlin脚本引擎添加到我的Kotlin

  • 问题内容: 我一直在尝试编写从串行端口读取数据的python脚本。它在命令行上运行良好,但是我需要它作为后台进程运行而没有任何命令行界面。该脚本有一个while循环,该循环从串行端口读取下一个数据字节,并相应地模拟按键。为了使按键可以专注于当前窗口而不是python命令行,我需要脚本作为后台进程运行。我在这里读的答案很少,但是没有什么让我振奋。请指出正确的方向。 问题答案: 在Windows上,您

  • 问题内容: 我正在调试一些必须在我的虚拟机上运行的python脚本。而且,我更喜欢在本地(虚拟机外部)编辑脚本。因此,我发现每次都将脚本修改为虚拟机 很繁琐。谁能提出一些有效的方法? 特别是,我想知道是否可以在远程PVM上执行python脚本。像这样: 问题答案: 可以使用ssh。Python接受连字符(-)作为执行标准输入的参数, 运行 python –help 以获得更多信息。

  • 问题内容: 哈o 我试图让python脚本在(ubuntu)linux上作为服务(守护程序)运行。 在网络上,存在几种解决方案,例如: http://pypi.python.org/pypi/python- daemon/ 行为规范的Unix守护进程很难正确执行,但是每个守护程序所需的步骤几乎相同。DaemonContext实例保存程序的行为和配置的进程环境。使用实例作为上下文管理器进入守护程序状