繁体   English   中英

如何在python脚本中引用openshift的env目录?

[英]How to reference env directories of openshift in a python script?

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
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脚本来使用cron调用此python脚本。例如:

 #!/bin/bash
 date >> ${OPENSHIFT_LOG_DIR}/status.log
 chmod +x status
 cd ${OPENSHIFT_REPO_DIR}/wsgi/crawler
 nohup python file.py 2>&1 &

这些变量OPENSHIFT_ *作为OpenShift上的环境变量提供-因此$ _ENV [“ OPENSHIFT_LOG_DIR”]是在php脚本中获取值的示例。

在python中,等效项只是os.getenv(“ OPENSHIFT_LOG_DIR”)。 对上述Calvin的帖子进行了编辑,并提交了它们。

回复: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   

高温超导

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM