社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Django

Django模型在使用芹菜更新和部署到Heroku时未保存到数据库

CSStudent19583 • 3 年前 • 1334 次点击  

所以这个标题有点冗长,但我认为它很好地解释了我的问题。

我有一个Django项目,通过使用芹菜和RabbitMQ从另一个网站抓取货币数据,每60秒更新一次模型。当我在本地运行芹菜工人时,它工作得非常好,但是当我部署到Heroku时,模型不会更新。

当我查看日志时( heroku原木——尾巴 )它显示任务正在运行,但它们没有更新数据库模型。我相信这一定是因为我的设置中出现了一些配置错误。py文件,但我尝试了许多解决方案,但都没有效果。我也尝试改用Redis,但也遇到了同样的问题(它在日志中运行良好,但实际上并不更新数据库)。

以下是我认为可能导致问题的相关代码。

设置。py(使用rabbitMQ时):

CELERY_BROKER_URL = 'rabbitMQ_url_given_from_heroku'
BROKER_URL = os.environ.get("CELERY_BROKER_URL", "django://")
BROKER_POOL_LIMIT = 1
BROKER_CONNECTION_MAX_RETRIES = None

CELERY_TASK_SERIALIZER = "json"
CELERY_ACCEPT_CONTENT = ["json", "msgpack"]

设置。py(使用Redis时):

CELERY_BROKER_URL = 'Redis_url_given_from_heroku'
CELERRY_RESULT_BACKEND = 'django-db'
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_TIMEZONE = 'UTC'

芹菜。py

import os
from celery import Celery

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'cryptoApi.settings')

app = Celery('cryptoApi')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()

程序文件

web: gunicorn cryptoApi.wsgi --log-file -
worker: celery -A cryptoApi worker -l info

任何意见都将不胜感激

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/128364
 
1334 次点击  
文章 [ 1 ]  |  最新文章 3 年前
Chris
Reply   •   1 楼
Chris    3 年前

我怀疑您正在使用SQLite作为数据库。 That won't work as expected on Heroku .

然而,关于这一点的大多数问题都有不同的表现:它们看起来像在工作,但一段时间后,当部署新代码时,或者在dyno重启后的第二天,数据就会丢失。

你没有看到新数据的原因 完全 是吗 workers run on dedicated dynos ,与您的 web 每个dyno都有自己的SQLite数据库。你保存到其中一个的任何数据在另一个上都不可见。

你必须切换到客户端服务器 data store Heroku先生自己的 Postgres service 这通常是一个很好的起点。