OpenShift:无法使用cron python脚本

时间:2016-09-25 18:04:01

标签: python mysql cron openshift

我正在OpenShift上设置一个应用程序。它需要Python脚本每小时运行一次,并将数据从在线服务器提取到OpenShift上的MySQL数据库中。通过在我的计算机上本地运行Python脚本并使用端口转发技术,我已经填充了这个数据库一段时间了。这就像一个魅力。下面是执行此操作时显示的端口转发信息。

Service Local               OpenShift
------- -------------- ---- -------------------
httpd   127.0.0.1:8080  =>  127.12.248.131:8080
mysql   127.0.0.1:3306  =>  127.12.248.130:3306
node    127.0.0.1:8081  =>  127.12.248.129:8080

Press CTRL-C to terminate port forwarding

我在本地脚本中使用的变量......

host='127.0.0.1'
user='user_placeholder'
passwd='password_placeholder'
db='3v3'
port=3306

当然我希望脚本在OpenShift的服务器上自动运行,所以我不必自己动手。经过快速搜索,我偶然发现了cron方法。可以将python脚本放在地图中以使其每小时运行一次。我设置了一些环境变量来访问我的数据库,就像我在本地脚本中所做的那样。但是,当我尾随它时,脚本似乎无法连接到MySQL数据库。我甚至打印出环境变量,它们与我以前成功移植过的那些完全相同。

host=os.environ['OPENSHIFT_EXTMYSQL_DB_HOST'] # prints '127.12.248.130'
user=os.environ['OPENSHIFT_EXTMYSQL_DB_USERNAME'] # prints 'user_placeholder'
passwd=os.environ['OPENSHIFT_EXTMYSQL_DB_PASSWORD'] # prints 'password_placeholder'
db=os.environ['OPENSHIFT_EXTMYSQL_DB_NAME'] # prints '3v3'
port=int(os.environ['OPENSHIFT_EXTMYSQL_DB_PORT']) # prints 3306

错误消息:

File "/var/lib/openshift/57c57f1889f5cfd9bb00006b/app-root/runtime/repo/.openshift/cron/minutely/test.py", line 36, in <module>
db = MySQLdb.connect(host=os.environ['OPENSHIFT_EXTMYSQL_DB_HOST'], user=os.environ['OPENSHIFT_EXTMYSQL_DB_USERNAME'], passwd=os.environ['OPENSHIFT_EXTMYSQL_DB_PASSWORD'], db=os.environ['OPENSHIFT_EXTMYSQL_DB_NAME'], port=int(os.environ['OPENSHIFT_EXTMYSQL_DB_PORT']))

File "/opt/rh/python27/root/usr/lib64/python2.7/site-packages/MySQLdb/__init__.py", line 81, in Connect
return Connection(*args, **kwargs)

File "/opt/rh/python27/root/usr/lib64/python2.7/site-packages/MySQLdb/connections.py", line 187, in __init__
super(Connection, self).__init__(*args, **kwargs2)

_mysql_exceptions.OperationalError: (2003, "Can't connect to MySQL server on '127.12.248.130' (113)")

老实说,我不知道这可能会出错。我知道这不是一个主角,但如果有人想知道问题是什么,我会很高兴听到。

0 个答案:

没有答案