所以这个标题有点冗长,但我认为它很好地解释了我的问题。
我有一个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
任何意见都将不胜感激