网络服务器上的Python脚本
问题描述:
我有一个python脚本,它从网站下载N张图片。我在webserver ubuntu 10.04上运行它。例如download.py从网站上下载10000张图像,打印到文件中以查看发生的错误。下载N张图像后,退出。通常在本地机器上运行我喜欢它:网络服务器上的Python脚本
sudo python download.py
我怎样才能在网络服务器上运行它始终在运行,当它完成了它应该停止?我需要时手动运行它(cron作业不是必需的)。 for循环中的脚本:
for i in range(1, N):
#do download
如果脚本是由一些错误,停止,我需要从开始再次运行,而我没有保存任何数据从停止的地方运行。
答
在我的情况下,我可以像这样运行它:sudo nohup python download.py
答
在您的服务器上,您可以使用Twisted提供的Event循环并使其定期运行。
from twisted.internet import task
from twisted.internet import reactor
timeout = 60.0
def downloadlinks():
# Have a logic to start download.
# One previous download is over.
if num_images_downloaded < 1000:
pass # previous download still in progress
else:
start_download()
#do work here
pass
l = task.LoopingCall(doWork)
l.start(timeout) # call every sixty seconds
reactor.run()
答
您可以创建一个能够运行该脚本