我正在研究一個有兩個django項目的系統。服務器和客戶端。服務器負責管理多個客戶端實例。這個系統依賴Sentry/Raven來處理錯誤記錄。在我的Django項目中訪問Sentry模型
我的問題是,哨兵需要我手動創建和配置每個客戶端(哨兵項目)。由於客戶端實例的數量很大,我必須在我的服務器項目上手動執行此操作。我試圖自動化這個過程,所以當我在服務器上創建一個新的客戶端時,它會創建一個新的Sentry項目。
就像在this question,我試圖直接訪問我的項目上的Sentry ORM。但是這顯示出死路一條。所以我寫了一個python scrypt來做到這一點。
在上述腳本中,我從哨兵中導入了DJANGO_SETTINGS_MODULE,並用它來解決問題,直到我有我需要的東西。
sys.path.append("/sentry/")
os.environ.setdefault("DJANGO_SETTINGS_MODULE", 'sentry_configuration_file')
from sentry.models import *
#Do my thing here
如果我在我的shell上運行腳本,它完美的工作。
然而,當我使用子稱它爲我的Django項目
from subprocess import call
call("/sentry/venv/bin/python /sentry/my_script.py", shell=True)
腳本生成的「從sentry.models以下錯誤內導入*行:
ImportError("Could not import settings '%s' (Is it on sys.path?): %s" % (self.SETTINGS_MODULE, e))
ImportError: Could not import settings 'configurations.settings' (Is it on sys.path?): No module named configurations.settings
你可能已經注意到哨兵是安裝在virtualenv裏面的,但是當我在我的bash上調用這個腳本時,我不需要它激活,只要我提供了virtualenv的python的正確路徑。我迷失在這裏。當我使用shell運行良好時,我發現腳本無法使用subprocess.call失敗。
任何指針都會大大降低。
謝謝。