不过如果你的脚本在windows能正常工作,那么linux也应该OK,脚本本身应该是没问题的。使用pip或easy_install可以管理和安装python的package包,实际上它们都是从pypi服务器中搜索和下载package的。目前在pypi服务器上,有超过三万多个package,同时还允许我们将自己的代码也上传发布到服务器上。这样,世界上的所有人都能使用pip或easy_install来下载使用我们的代码了。
具体步骤如下:
首先创建项目文件和setup文件。
目录文件结构如下:
project/
simpletest/
__init__py
testpy
setuppy
假设项目文件只有一个simpletest包,里面有一个testpy文件。
创建的setuppy文件格式大致如下,其中,install_requires字段可以列出依赖的包信息,用户使用pip或easy_install安装时会自动下载依赖的包。详细的格式参考文档。
from setuptools import setup, find_packages
setup(
name = 'simpletest',
version = '001',
keywords = ('simple', 'test'),
description = 'just a simple test',
license = 'MIT License',
install_requires = ['simplejson>=11'],
author = 'yjx',
author_email = 'not@allcom',
packages = find_packages(),
platforms = 'any',
)
然后将代码打包。
打包只需要执行python
setuppy xxx命令即可,其中xxx是打包格式的选项,如下:
# 以下所有生成文件将在当前路径下 dist 目录中
python setuppy bdist_egg # 生成easy_install支持的格式
python setuppy sdist # 生成pip支持的格式,下文以此为例
发布到pypi。
发布到pypi首先需要注册一个账号,然后进行如下两步:
注册package。输入python setuppy register。
上传文件。输入python setuppy sdist upload。
安装测试
上传成功后,就可以使用pip来下载安装了。
另外,pypi还有一个测试服务器,可以在这个测试服务器上做测试,测试的时候需要给命令指定额外的"-r"或"-i"选项,如python
setuppy register -r "",python
setuppy sdist upload -r "",pip
install -i "" simpletest。
发布到测试服务器的时候,建议在linux或cygwin中发布,如果是在windows中,参考文档,需要生成pypirc文件首先利用
osremove() will remove a file
osrmdir() will remove an empty directory
shutilrmtree() will delete a directory and all its contents
写你的模块
利用Linux crontab定时任务运行这个模块。
还可以以守护进程的方式运行你的脚本。nohup <程序名> &卡顿。不是所有的软件程序都可以在任何服务器中都可以正常运行,用别的服务器运行python程序是会让python卡顿掉帧,甚至严重可能直接会崩服务器的现象,只在原本的服务器中进行 *** 作就好。
一、nohup
nohup,即 no hangup,nohup 的用途就是让提交的命令忽略 hangup 信号,从而使我们的进程避免中途被中断。它可以让 python 脚本和服务器连接端的 session 分离,以达到退出后依旧执行:
$ chmod +x /your_path/yourscriptpy # 先设置可执行权限$ nohup python /your_path/yourscriptpy# 切记退出的 Terminal 的时候,不要 ctrl+c 退出,而是直接关闭,不然 Nohup 就被你关闭了。
如何关闭这个一直执行的进程呢:
# 找到对应的进程 PID
$ ps -ef | grep python
# 返回内容如:
user 2430 1 0 Jul03 00:00:01 /usr/bin/python -tt /usr/sbin/yum-updatesd
# kill 掉该进程即可:
$ kill -9 2430
PS:nohup 在服务器重启之后就失效了,所以并不完美。
二、将命令写入 Linux 启动脚本
Linux 在启动的时候会执行 /etc/rclocal 里面的脚本,所以只要在这里添加执行命令就可以:
$ vim /etc/rclocal
# 如果是 Centos 添加以下内容:
/your_path/python34 /your_path/yourscriptpy
# 以上内容需要添加在 exit 命令前,而且由于在执行 rclocal 脚本时,PATH 环境变量未全部初始化,因此命令需要使用绝对路径。
PS:这种方式的缺点是如果脚本挂了,那么不会自动重新启动。
三、使用 Supervisor 进程管理工具
详见这篇文章:使用 Supervisor 管理服务器后台进程,在服务器重启和脚本出错后,可以完美重启,推荐。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)