2016-07-14 53 views
0

我已經構建了一個簡單的Django應用程序併成功地將它部署到了Beanstalk。該應用程序在RDS實例上使用PostgreSQL後端。從瀏覽器中,我可以成功訪問管理員並在其中創建和刪除模型。但是,我也試圖運行更新數據庫的cron。我在服務器上安裝了cron,但它不起作用。於是我接着進去,手動運行這些命令,並得到以下錯誤:服務器是否在主機「127.0.0.1」上運行,並在端口5432上接受TCP/IP連接?Cron不能在Python和PostgreSQL上使用Amazon Elastic Beanstalk

從我的谷歌搜索中,我猜這與安全組,允許的主機或JDBC有關。也許允許Beanstalk的EC2實例和RDS實例互相交互。但我迷路了。我試着從這個AWS tutorial的指示。

爲了記錄,在本地運行時,cron運行的腳本完美地工作爲python manage.py runscript scrape

其他東西: The tutorial I followed for deploying my appThe tutorial I followed for the cron

克朗settings.py

if 'RDS_DB_NAME' in os.environ: 
    DATABASES = { 
     'default': { 
      'ENGINE': 'django.db.backends.postgresql_psycopg2', 
      'NAME': os.environ['RDS_DB_NAME'], 
      'USER': os.environ['RDS_USERNAME'], 
      'PASSWORD': os.environ['RDS_PASSWORD'], 
      'HOST': os.environ['RDS_HOSTNAME'], 
      'PORT': os.environ['RDS_PORT'], 
     } 
    } 
else: 
    DATABASES = { 
     'default': { 
      'ENGINE': 'django.db.backends.postgresql_psycopg2', 
      'NAME': 'db', 
      'USER': 'user', 
      'PASSWORD': 'password', 
      'HOST': '127.0.0.1', 
      'PORT': '', 
     } 
    } 
+0

只需在cron中使用「python3」而不是「python3.4」,然後檢查它是否運行 – error2007s

+0

我也注意到另一個錯誤:KeyError:'RDS_DB_NAME'。看起來環境變量可能因任何原因而未定義。 –

+0

python3仍然導致錯誤 –

回答

0

這的

* * * * * /opt/python/run/venv/bin/python3.4 /opt/python/current/app/manage.py runscript scrape 

數據庫的部分是你運行一個python腳本的方式。

這是一個關於cron的問題。 首先是在你的python腳本的頂部添加一個SHEBANG行。

#!/usr/bin/env python3 

使你的腳本可執行文件chmod +x

,做一個crontab -e並添加0 0 */2 * * /path/to/your/pythonscript.py

0

我是啞巴。我忘了在AWS控制檯中實際設置環境變量。我能說什麼,這是漫長的一天。

+1

你最好在〜/ .bashrc中將它們設置爲exports,這樣你就不必一直重新實例化它們,像'export RDS_DB_NAME ='yourdbname''。同時檢查pg_hba.conf中對等設置爲信任並重新啓動'service postgresql restart'可能會有所幫助。 – dmitryro

相關問題