【发布时间】:2019-05-29 06:16:03
【问题描述】:
我有一个功能强大的 Django 应用程序,它在我看来有许多 Google 文本转语音 API 调用和数据库读/写操作。在本地测试时,加载页面大约需要 3 秒,但是当我将应用程序实时部署到 Heroku 时,加载网页大约需要 15 秒。所以我正在努力减少加载时间。
我看到了这篇文章:https://devcenter.heroku.com/articles/python-rq,它建议我应该通过使用 RQ(Redis 队列)库将作业排队到工作人员来使用后台任务。我按照他们的步骤将他们的worker.py 文件包含在与我的manage.py 文件相同的目录中(不确定这是否是放置它的正确位置)。我想用一个虚拟函数在本地对其进行测试,并查看它是否可以正常运行。
# views.py
from rq import Queue
from worker import conn
def dummy(foo):
return 2
def my_view(request):
q = Queue(connection=conn)
for i in range(10):
dummy_foo = q.enqueue(dummy, "howdy")
return render(request, 'dummy.html', {})
在不同的终端中我运行:
$ python worker.py
$ python manage.py runserver
但是在加载网页时,我在python worker.py 终端中收到了许多"Apps aren't loaded yet." 错误消息。我还没有尝试部署到 Heroku,但我想知道为什么我会在本地收到此错误消息?
【问题讨论】:
-
你有redis在本地运行吗?
-
我没有(这里是 Redis 新手)。但我只是尝试在第三个单独的终端中运行 redis-server,它给了我同样的错误。
标签: python django heroku redis