2014-11-08 24 views
3

我写了下面的脚本,这将电子邮件发送到特定的电子邮件地址,并将其保存在.openshift/cron的/每分钟目录内:我在.openshift/cron/minutely目录下的OpenShift上托管的Python脚本不运行。怎么了?

import smtplib 
g = smtplib.SMTP('smtp.gmail.com:587') 
g.ehlo() 
g.starttls() 
g.ehlo() 
g.login('myusername','mypassword') 
g.sendmail('myemail','otheremail','message') 

我然后推脚本到服务器。

我预计该程序每分钟运行一次,并每分钟收到一封电子邮件。但是,没有证据表明我的代码正在运行。任何想法可能导致这个问题?我在设置应用程序时忘记了一个步骤吗?

注意:我检查过我提供的电子邮件地址和密码是否正确,并且安装了cron。

编辑:看来这个问题是从服务器发起: 我删除了文件的原始内容,创建“TESTFILE.TXT”,并写了这个代码,而不是:等待后

a = open('testfile.txt','r+') 
if not a.read(): 
    a.write('Test writing') 
a.close() 

代码运行和ssh-ING到服务器,我改叫app-root/logs目录并显示cron.log的内容,这看起来是这样的:

Sat Nov 8 11:01:11 EST 2014: START minutely cron run 
__________________________________________________________________________ 
/var/lib/openshift/545a6ac550044652510001d3/app-root/runtime/repo//.openshift/cron/minutely/test_openshift.py: 
/var/lib/openshift/545a6ac550044652510001d3/app-root/runtime/repo//.openshift/cron/minutely/test_openshift.py: line 1: syntax error near unexpected token `(' 
/var/lib/openshift/545a6ac550044652510001d3/app-root/runtime/repo//.openshift/cron/minutely/test_openshift.py: line 1: `a = open('testfile.txt','r+')' 
__________________________________________________________________________ 
Sat Nov 8 11:01:11 EST 2014: END minutely cron run - status=0 
__________________________________________________________________________ 

难道是服务器为n不把我的文件中的代码解释为python代码?欢迎任何建议。

+0

您的方法错误。尝试对问题进行最小程度的重现。例如,您可以尝试从脚本中的文件中写入某些内容以缩小问题范围。问题可能来自您的图书馆,GMail的一些安全性或任何其他问题。 – AsTeR 2014-11-08 15:18:48

+0

是的,你应该尝试记录一些可以帮助你调试的信息。 – 2014-11-08 15:27:15

+0

谢谢你们两位。我会尽力回复你 – loic17 2014-11-08 15:44:25

回答

3

连接到控制台openshift

rhc ssh app_name 

更改到目录权限创建脚本:

cd $OPENSHIFT_DATA_DIR 

创建test01.py脚本

touch test01.py 

给执行权限TEST01 .py

chmod +x test01.py 

编辑脚本

nano test01.py 

添加一个简单的代码一样

print("Hello") 

运行脚本:

./test01.py 

错误:

./test01.py: line 1: syntax error near unexpected token `"Hello"' 
./test01.py: line 1: `print("Hello")' 

现在检查蟒蛇路径

which python 

输出

/var/lib/openshift/your-sesseion-id/python/virtenv/venv/bin/python 

现在添加一个她砰到TEST01。PY

#!/var/lib/openshift/your-sesseion-id/python/virtenv/venv/bin/python 
print("Hello") 

现在执行它

./test01.py 

输出:

Hello 

结论: 您的脚本应该知道如何运行,哪里是蟒蛇的路径,所以在添加它脚本的第一行

相关问题