【发布时间】:2015-05-26 17:15:30
【问题描述】:
我试图每天只运行一次这个特定的 shell 脚本。这是我的runLucene.py 代码:
#!/usr/bin/env python
import os
from extras.download_datos_desambiguar import news_Lucene
x=datetime.today()
y=x.replace(day=x.day, hour=09, minute=00, second=0, microsecond=0)
delta_t=y-x
secs=delta_t.seconds+1
def fourdlife():
print "checking function"
os.system("~/code/4dlife_repo/4dbatch/src/engines/extras/download_datos_desambiguar/news_Lucene.py")
t = Timer(secs, fourdlife)
t.start()
print "timer started"
我正在我的ProcesosContinuous.py 文件中运行此代码,如下所示:
while True:
os.system("./runl.sh")
#some other processes
runl.sh 在哪里
python ~/code/4dlife_repo/4dbatch/src/engines/extras/download_datos_desambiguar/news_Lucene.py
这个 python 代码总是在我的apache2 服务器上运行。
但是,这适用于任何给定时间,而不仅仅是指定时间。我究竟做错了什么?
另外,我觉得有更好的方法来做到这一点。我查看了cron 任务,但这不是我想要的。我不希望我的程序转到sleep(),因为我需要在runl.sh 进程之后运行其他进程。最好的方法是什么?
【问题讨论】:
-
您能解释一下为什么
cron对您不利吗?这正是它的目的。 -
因为我在某个地方读到过,这和把代码放到
sleep()直到下一次它应该运行是一样的。 -
@eugene,我正在从我的 python 代码中调用 shell 脚本。请在评论前仔细阅读问题。
-
仔细阅读:“这是我的runl.sh代码:”这里是python代码。那么?
-
“Somewhere”不是一个好的技术来源。
cron有一个后台程序,它在后台运行并执行预定的作业。只有以这种方式设计,作业才会进入休眠状态。至于你的另一句话,这句话与第二个sn-p有关。问题是这样写的。如果您还有其他意思 - 欢迎您对其进行编辑。