1. 苏葳的备忘录首页
  2. 因特网

h-sphere面板中用crontab执行定时任务的尝试

crontab h-sphere python虚拟空间的h-sphere类似于cpanel面板,在ftp管理中,能打开crontab功能,这就为虚拟空间在后台执行任务提供了可能。在crontab编辑中定制一个任务,现在问题是,中美时间不同,如何知道本地时间与服务器时间差几个小时?用ftp上传一个文件,然后在h-sphere的文件管理中查看上传的文件的时间,发现该系统时间比中国本地时间晚13个小时。

然后就可以开始设置crontab任务。

0 50 24 12 * python /XXXXX.com/zzzz.py

尝试python执行一个程序试试。执行信息会发送到自己的注册邮箱里。

执行时间过后,到邮箱查看信息,发现邮件:

ython: can’t open file ‘/XXXXX.com/zzzz.py’: [Errno 2] No such file or directory

看来是映射的目录不对,由于ftp过去直接就是这个目录,有可能此目录只是ftp根路径的映射,再改改试试:

在上面.py文件前再加上/hsphere/local/home/a1234567,这个位置是在h-sphere面板中看到的home目录位置,希望这个是绝对路径名。再次修改crontab时间来执行,收到邮件:

tuple' object has no attribute 'scheme'
Traceback (most recent call last):
File "/hsphere/local/home/a1234567/XXXX.com/zzzz.py", line 311, in ?
print u'********************************搞定******************************************'
UnicodeEncodeError: 'ascii' codec can't encode characters in position 32-33: ordinal not in range(128)

OK,至少路径是对了。看来每个虚拟空间用户有个用户名a1234567,对方系统会为此用户在hsphere/local/home下建立用户目录(当然也可能是各种映射的)。

下面问题就是解决字符编码的问题了。将程序头部指定utf-8的语句去掉,并去掉文件中所有汉字。再执行。居然不给发邮件了。这是正确执行了吗?但程序并未产生需要的结果。写个简单的testfile.py程序试一下吧,看能不能产生个文件。

file_object = open('thefile.txt', 'w')
file_object.write(‘hhhhhhh')
file_object.close( )

结果,还是没有反应。将testfile.py所处的目录改成777权限,仍然无用,而却收不到任何报错邮件。

点进h-sphere的文件管理面板来回查看,却突然在ftp的根目录下发现了thefile.txt。也就是/hsphere/local/home/a1234567绝对目录下,这时想起来,以python 绝对路径名.py形式执行程序,会自动放入当前根目录,而非通常在testfile.py目录下用python testfile.py执行时会输出到的当前目录。

这就好办了。原先zzzz.py程序要求输出目录必须先存在,这下修改程序中的输出目录也为绝对路径,或相对于ftp根目录的相对路径就可以了。

原创文章,作者:苏葳,如需转载,请注明出处:https://www.swmemo.com/580.html

发表评论

邮箱地址不会被公开。 必填项已用*标注