AWS + Django 定时任务
Posted
技术标签:
【中文标题】AWS + Django 定时任务【英文标题】:AWS + Django cronjob 【发布时间】:2014-03-22 05:34:56 【问题描述】:我使用 Elastic Beanstalk 让我的 Django 应用程序在 AWS 上运行。我想运行一个 cronjob 来更新我的一些模型。我做了一个自定义管理命令 (https://docs.djangoproject.com/en/1.6/howto/custom-management-commands/) 并且可以在本地运行它,但是如果我 ssh 进入我的实例并运行 crontab,我会收到错误:
没有名为 django.core.management 的模块
在 AWS 上为 Django 项目运行 cronjobs 的最佳方式是什么?
【问题讨论】:
你在服务器上设置了 virtualenv 吗?如果是这样,您是否确保使用 virtualenv 中的正确 python 运行 manage.py 命令? 我没有设置 virtualenv。我是不是该?另外,如何使 manage.py 命令与该 virtualenv 一起运行? 是的,你应该这样做。基本上你最终会做的是/path/to/virtualenv/bin/python /path/to/manage.py command
。您目前无法运行命令的原因是您尚未在服务器上安装 Django。
我在尝试对 manage.py 执行任何操作时收到此错误:KeyError: 'RDS_DB_NAME'。这在我的设置文件中。
我已经向他们的团队发送了多封电子邮件,请求支持的功能以及实施建议。我收到了他们的确认,但还没有看到结果。渴望拥有这个。
【参考方案1】:
这适用于 Django 1.10.6 + AWS ElasticBeanstalk + Cronjob
* * * * * source /opt/python/run/venv/bin/activate && cd /opt/python/current/app/ && python manage.py do_your_thing > $HOME/cron-sqs.log 2>&1
do_your_thing 是management command
【讨论】:
【参考方案2】:让它工作(这是无证的,因此随时可能更改)
*/10 * * * * source /opt/python/current/env && django-admin.py do_your_thang
/opt/python/current/env
似乎不仅包含您的“虚拟环境”内容,还包含连接到数据库等所需的实际变量。
我仍然没有收到任何来自 EB 团队的关于 EB + cron + django 的回复。
【讨论】:
以上是关于AWS + Django 定时任务的主要内容,如果未能解决你的问题,请参考以下文章
django-vuecelery延迟任务定时任务 django中使用celery 秒杀功能 双写一致性 首页轮播图定时更新 课程前端页面