使用virtualen在debian中守护python脚本

2024-04-28 06:20:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我在linux中看到了很多用于守护python脚本的脚本,但是没有太多关于如何使用它们的信息。有人能指导我吗?

我目前有一个冗长的python脚本,它在套接字上侦听传入的消息,如果格式正确,则接受该消息,然后将其存储到数据库中。脚本本身只需打开套接字,然后监听一段时间(这就完成了任务!)做所有的工作。

要对其进行守护,我需要修改当前脚本还是从单独的脚本调用它?我看过这两个例子,但都没用。

另外,我使用的是virtualenv,这可能是我问题的根源,有任何关于在后台脚本中使用它的提示吗?


Tags: 脚本信息数据库消息virtualenvlinux格式后台
2条回答

创建一个激活虚拟环境的shell脚本,并在后台运行Python脚本。

另外,虚拟环境中应该有一个python模块,您也可以从中导入和激活环境。我现在没有virtualenv,所以我无法检查它在哪里,但是在虚拟环境中搜索activate(或类似的东西),您应该找到它。

编辑:添加了一个最小的Debian init.d脚本

启动计算机时启动守护程序所需的绝对最少的脚本是:

#!/bin/sh
/path/to/program &

&使程序在后台运行,因此不会停止其余的启动过程。

要获得更完整的脚本,请复制/etc/init.d/skeleton并编辑新文件。要编辑的重要部分是开头的块(在### BEGIN INIT INFO### END INIT INFO(由update-rc.d程序使用)和NAMEDAEMONDAEMON_ARGS变量之间。希望这应该是制作启动脚本所需要的全部。

按如下方式激活脚本:

sudo update-rc.d <name of script> defaults
sudo update-rc.d <name of script> enable

开始吧:

sudo update-rc.d <name of script> start

<name of script>只是名称,而不是完整路径。

script
  export PYTHONPATH=.:/home/ubuntu/.local/lib/python2.7/site-packages/:/home/ubuntu/python/lib/python2.7/site-packages/
  exec start-stop-daemon --start  --chuid ubuntu --exec /home/ubuntu/python_envs/MyProj/bin/python /home/ubuntu/www/MyProj/MyProj.py -- --config-file-dir=/home/ubuntu/www/MyProj/config/ >> /home/ubuntu/startup.log 2>&1 &
end script

当需要在python virtualenv中运行应用程序时,可以“激活”virtualenv,或者使用该环境的唯一python命令。

根据网站“如果直接从virtualenv的bin/目录(例如path/to/env/bin/pip或/path/to/env/bin/python script.py)运行脚本或python解释器,则无需激活。”-http://pypi.python.org/pypi/virtualenv

我还有一些从源代码编译的python模块。这些必须在PYTHONPATH环境变量中。这可能是virtualenv激活的一部分,使用virtualwrapper完成,或者显式调用(如下所示)

从一个新开始的工作调用程序也可以。上面是我的例子。

在Amazon EC2上的一个Ubuntu 10.10实例上,我使用start-stop daemon命令运气更好。 我还与其他一些新贵的“节”进行了斗争,我正在用一个特定的virtualenv和一些参数调用一个python应用程序。

相关问题 更多 >