簡體   English   中英

Cron無法在使用Python和PostgreSQL的Amazon Elastic Beanstalk上工作

[英]Cron not working on Amazon Elastic Beanstalk with Python and PostgreSQL

我建立了一個簡單的Django應用程序,並將其成功部署到Beanstalk。 該應用程序在RDS實例上使用PostgreSQL后端。 通過瀏覽器,我可以成功訪問管理員並在其中創建和刪除模型。 但是,我也試圖運行一個cron來更新數據庫。 我在服務器上安裝了cron,但是沒有用。 因此,我然后進行了炮擊,手動運行了命令並得到以下錯誤: 服務器是否在主機“ 127.0.0.1”上運行並在端口5432上接受TCP / IP連接?

從我的Google搜索中,我猜測這與安全組,允許的主機或JDBC有關 也許允許Beanstalk的EC2實例和RDS實例彼此交互。 但是我迷路了。 我嘗試了本AWS教程中的說明。

作為記錄,當在本地運行python manage.py runscript scrape時,cron運行的腳本可以完美運行。

其他內容: 我遵循的有關部署應用程序的教程 我為cron遵循的教程

克朗

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

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': '',
        }
    }

這是運行python腳本的方式。

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

#!/usr/bin/env python3

使用chmod +x使腳本可執行

並執行crontab -e並添加0 0 */2 * * /path/to/your/pythonscript.py

我很笨 我忘了在AWS控制台中實際設置環境變量。 我能說什么,已經漫長的一天。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM