1

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
4

2 回答 2

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 脚本来使用 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 &
于 2012-11-05T01:28:21.180 回答
2

这些变量 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   

高温高压

于 2012-11-06T03:29:13.037 回答