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スクリプトを参照することで、このpythonスクリプトをcronで呼び出すことができます...たとえば、次のようになります。-

 #!/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 の投稿を編集して送信しました。

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

于 2012-11-06T03:29:13.037 に答える