У меня есть функциональное приложение Django, которое на мой взгляд содержит множество вызовов Google Text-To-Speech API и чтение / запись базы данных.При локальном тестировании загрузка страницы занимает около 3 секунд, но при развертывании приложения в режиме реального времени на Heroku загрузка страницы занимает около 15 секунд.Поэтому я пытаюсь сократить время загрузки.
Я наткнулся на эту статью: https://devcenter.heroku.com/articles/python-rq, в которой предлагается использовать фоновые задачи, ставя задания в очередь для работников, использующих библиотеку RQ (Redis Queue).Я выполнил их действия и включил их файл 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
Но при загрузкевеб-страница Я получил много сообщений об ошибках "Apps aren't loaded yet."
в терминале python worker.py
.Я еще не пытался выполнить развертывание в Heroku, но мне интересно, почему я получаю это сообщение об ошибке локально?