OpenShift有这些默认目录:
# $_ENV['OPENSHIFT_INTERNAL_IP'] - IP Address assigned to the application
# $_ENV['OPENSHIFT_GEAR_NAME'] - Application name
# $_ENV['OPENSHIFT_GEAR_DIR'] - Application dir
# $_ENV['OPENSHIFT_DATA_DIR'] - For persistent storage (between pushes)
# $_ENV['OPENSHIFT_TMP_DIR'] - Temp storage (unmodified files deleted after 10 days)
如何在python脚本中引用它们? 示例脚本“在日志目录中创建了一个日志文件并登录数据目录?
from time import strftime
now= strftime("%Y-%m-%d %H:%M:%S")
fn = "${OPENSHIFT_LOG_DIR}/test.log"
fn2 = "${OPENSHIFT_DATA_DIR}/test.log"
#fn = "test.txt"
input = "appended text " + now + " \n"
with open(fn, "ab") as f:
f.write(input)
with open(fn2, "ab") as f:
f.write(input)
这些脚本可以和cron一起使用吗?
编辑BASH文件:
#! /bin/bash
#date >> ${OPENSHIFT_LOG_DIR}/new.log
source $OPENSHIFT_HOMEDIR/python-2.6/virtenv/bin/activate
python file.py
date >> ${OPENSHIFT_DATA_DIR}/new2data.log
答案 0 :(得分:3)
import os
os.getenv("OPENSHIFT_INTERNAL_IP")
应该有用。
所以在你的例子中,修改为: -
import os
OPENSHIFT_LOG_DIR = os.getenv("OPENSHIFT_LOG_DIR")
fn = os.path.join(OPENSHIFT_LOG_DIR, "test.log")
而且,是的,你可以通过引用你的bash脚本来调用这个python脚本,如果你想...就像这样: -
#!/bin/bash
date >> ${OPENSHIFT_LOG_DIR}/status.log
chmod +x status
cd ${OPENSHIFT_REPO_DIR}/wsgi/crawler
nohup python file.py 2>&1 &
答案 1 :(得分:2)
这些变量OPENSHIFT_ *在OpenShift上作为环境变量提供 - 所以$ _ENV [“OPENSHIFT_LOG_DIR”]是一个在php脚本中获取值的示例。
在python中,等价物只是os.getenv(“OPENSHIFT_LOG_DIR”)。 对上面的Calvin的帖子进行了编辑并提交了'em。
Re:file.py存在的问题 - 使用os.getenv(“OPENSHIFT_REPO_DIR”)作为基本目录,其中所有代码都位于运行应用程序的齿轮上。 因此,如果您的文件位于.openshift / misc / file.py - 那么只需使用:
os.path.join(os.getenv("OPENSHIFT_REPO_DIR"), ".openshift", "misc", "file.py")
获得完整路径。
或者在bash中,等价物是:
$OPENSHIFT_REPO_DIR/.openshift/misc/file.py
HTH