1

我正在尝试使用此示例脚本在 python 中测试 crontab:

from crontab import CronTab

tab = CronTab(user='www',fake_tab='True')
cmd = '/var/www/pjr-env/bin/python /var/www/PRJ/job.py'
cron_job = tab.new(cmd)
cron_job.minute().every(5)
#writes content to crontab
tab.write()
print tab.render()

它返回未定义错误“fake_tab”。如果我删除此参数并
像这样调用函数:CronTab(user='www')。我返回以下错误:

Traceback (most recent call last):
File "<pyshell#8>", line 1, in <module>
tab = CronTab(user='www')
File "C:\Python27\lib\site-packages\crontab.py", line 160, in __init__
self.read(tabfile)
File "C:\Python27\lib\site-packages\crontab.py", line 183, in read
p = sp.Popen(self._read_execute(), stdout=sp.PIPE)
File "C:\Python27\lib\subprocess.py", line 711, in __init__
errread, errwrite)
File "C:\Python27\lib\subprocess.py", line 948, in _execute_child
startupinfo)
WindowsError: [Error 2] The system cannot find the file specified

有谁知道,我错过了什么?

4

3 回答 3

1

我认为这Crontab是一个 Unix/Linux 概念。不确定它是否可以在windows下工作。此页面显示“Windows 支持仅适用于手动 crontabs”。虽然不确定他的意思。

于 2013-07-25T07:35:36.293 回答
1

作为 python-crontab 的作者,我可以报告文档已更新。鉴于有很多人对手册的含义感到困惑,这显然是无效的。

如果你这样做:

mem_cron = CronTab(tab="""
  * * * * * command # comment
""")

您应该有一个仅用于内存的 crontab。如果您将文件作为 crontab 执行,则相同:

file_cron = CronTab(tabfile='filename.tab')

我一直在寻求改进代码和文档,所以请给我发电子邮件。

于 2013-10-12T07:29:24.743 回答
0

我发现找到工作的最简单方法crontab是:

settings.py(我正在使用 django)中,我定义了这些变量:

CRONTAB_EXECUTABLE='C:/Users/myuser/myvirtualenv/Lib/site-packages/django_crontab/crontab.py'
CRONTAB_DJANGO_PROJECT_NAME='myproject'
CRONTAB_DJANGO_MANAGE_PATH='C:/Users/myuser/myvirtualenv/myproject/manage.py'
CRONTAB_PYTHON_EXECUTABLE='C:/Users/myuser/AppData/Local/Programs/Python/Python36-32/pythonw.exe'

注意斜线。它必须向右倾斜,否则会导致语法错误。

通过这种方式crontab将找到工作或您要执行的任何内容。就我而言,我正在尝试:

C:\Users\bsi\mlearning3\src>python manage.py crontab add
于 2017-10-19T01:35:55.453 回答