当成功将Django-Celery-Redis部署到Heroku时的备忘录
转载来源博客信息
这是从我的博客转载的。
评论
这是一个使用Django+Celery实现异步处理的Django项目在Heroku上的部署。出于(大概)公式文档不足,我们经过多次尝试才最终成功,所以我想分享这些笔记,也许对其他人有帮助。
在Procfile中添加步骤1→指示启动Redis工作进程。
↓进程文件↓
web: gunicorn [プロジェクト名].wsgi:application -b 0.0.0.0:$PORT
worker: celery worker -A [プロジェクト名].celery -l INFO
#↑この行が追加された
#ローカルで必要だった、
#$celery -A [プロジェクト名] worker -l infoをherokuが勝手にやってくれるイメージです
在Heroku的本地环境中进行测试和确认能否工作。
$redis-server
#コマンドうつ場所はどこでもOK。heroku localでredis起動は同じく必要
(仮想環境,herokuのgitコマンドを打つ場所にて僕はやってます)$heroku local
我已在本地進行了settings.py的調整,迄今為止這部分運作正常。這樣就完成了部署準備。
为了解决在本地无法运行时的问题,我整理了一份自己的检查点。我在其中更加详细地描述了本地开发部分。
在中国的本土语言中,只需要一个选项,以下是对该句的翻译:
添加Heroku Redis附加组件的步骤3。
$heroku addons:create heroku-redis:hobby-dev
来自官方文件。同时hobby-dev是免费的。访问https://elements.heroku.com/addons/heroku-redis。
请确认是否已添加了插件。
$ heroku redis:info
=== redis-xxxx-123456 (REDIS_URL) #仮の名前に変更してます
Plan: Hobby Dev
Status: available
Created: 2018-06-15 13:19 UTC
Version: 3.2.11
Timeout: 300
Maxmemory: noeviction
Maintenance: not required
Maintenance window: Thursdays 17:30 to 21:30 UTC
Persistence: None
HA Status: Unavailable
这也可以在Heroku控制台的Web界面上确认。
安装适用于Django的heroku-redis连接软件包的步骤5。
需要使用一个名为django-redis-cache的模块。它在官方网页上有提到。
pip install django-redis-cache
pip freeze > requirements.txt
将步骤6中的settings.py的Celery配置连接到部署到的heroku-redis。
#settings.pyローカルで動いた参考例(引用です)
BROKER_URL = 'redis://localhost'
CELERY_RESULT_BACKEND = 'redis'
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_ACCEPT_CONTENT = ['json']
参考元:https://qiita.com/seizans/items/a40952248ef2004f1d62
请为以下内容提供一种中文本地化的表达方式:
Unfortunately, I am unable to view the referenced webpage as it requires a login. Could you please provide the specific content or context that you would like me to paraphrase?
改成以下的中文口语表达:
↓这样变成
#↓ここから追記↓
import os
CACHES = {
"default": {
"BACKEND": "redis_cache.RedisCache",
"LOCATION": os.environ.get('REDIS_URL'),
}
}
BROKER_URL = os.environ.get("REDIS_URL")
CELERY_RESULT_BACKEND = os.environ.get("REDIS_URL")
#↑ここまでが変更点↑
#BROKER_URL = 'redis://localhost' #localのときだけ
#CELERY_RESULT_BACKEND = 'redis' #localのときだけ
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_ACCEPT_CONTENT = ['json']
在添加heroku:redis时,REDIS_URL环境变量似乎会自动设置。
第七步:像往常一样将应用部署到Heroku上。
$git add.
$git commit -m "celery"
$git push heroku master
请按照第八步骤进行记录,以确认进展顺利。
$heroku logs -t
请参考以下资料
以下是公式文档《Django连接》中的内容:
[https://devcenter.heroku.com/articles/heroku-redis#connecting-in-python:embed:cite]
自己的最终形态与稍有不同,但是这对我很有参考价值。