繁体   English   中英

Django cron作业无法连接到Elastic Beanstalk上的数据库

[英]Django cron job failing to connect to database on Elastic Beanstalk

我有一个使用Postgre数据库在Elastic Beanstalk上运行的django应用程序。 该应用程序运行正常,与数据库进行对话没有问题。 这是我的数据库设置,

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.sqlite3',
            'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        }
    }

但是我有一个cron作业,它作为自定义命令运行,并且还需要将一个对象写入数据库,这是自定义命令,

class Command(BaseCommand):
    def handle(self, *args, **options):
        sources = Source.objects.all()
        // write some data

这是配置文件,

04_setup_cron:
     command: "cat .ebextensions/crontab.txt > /etc/cron.d/crontab && chmod 644 /etc/cron.d/crontab"
     leader_only: true

这就是我在crontab.txt上设置权限的方式

*/15 * * * * source /opt/python/run/venv/bin/activate && cd /opt/python/current/app/
&& source /opt/python/current/env && python manage.py parse >> /var/log/cron.log 2>&1

此cronjob失败,当我登录一个EC2实例并尝试运行此实例时,出现以下错误,

conn = Database.connect(**conn_params)
django.db.utils.OperationalError: unable to open database file

这在本地工作正常,如何使它在EC2实例上工作? 任何帮助表示赞赏。

问题可能来自不可访问的环境变量。 尝试将以下行添加到您的crontab.txt文件中:

*/15 * * * * root . /opt/elasticbeanstalk/support/envvars && ... 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM