Я пытаюсь назначить задачу для сельдерея делать на заднем плане, но я продолжаю сталкиваться с проблемами.Ошибка Django Celery
Краткий справочник о том, что я сделал до сих пор
Я установил celery
и django-celery
через easy_install
, добавил к INSTALLED_APPS
:
'djcelery',
'kombu.transport.django',
импортируемого следующий и побежал SyncDB:
import djcelery
djcelery.setup_loader()
BROKER_URL = "django://"
Задача, которую я пытаюсь запустить в фоновом режиме, - сброс пароля. Поэтому, когда пользователь забыл свой пароль, я хочу, чтобы задача отправки электронной почты выполнялась в фоновом режиме, так что я сделал это . Я переместил функцию forget_password с views.py
на tasks.py
, чтобы он мог работать.
Мои tasks.py
:
from django.contrib.auth.views import password_reset
from django.shortcuts import render
from celery.decorators import task
@task()
def forgot_password(request):
if request.method == 'POST':
return password_reset(request,
from_email=request.POST.get('email'))
else:
return render(request, 'forgot_password.html')
Их ничто в views.py
Сейчас.
Проблема, хотя я могу отправить электронное письмо, если я потеряю свой пароль. Я не уверен, что он работает в фоновом режиме. То, что я сделал, чтобы проверить, является была:
manage.py celery worker --loglevel=info
, но я получаю сообщение об ошибке: KeyError: 'processName'
:
C:\o\17\mysite>manage.py celery worker --loglevel=info
-------------- [email protected] v3.0.19 (Chiastic Slide)
---- **** -----
--- * *** * -- Windows-Vista-6.0.6001-SP1
-- * - **** ---
- ** ---------- [config]
- ** ---------- .> broker: django://localhost//
- ** ---------- .> app: default:0x319c930 (djcelery.loaders.DjangoLoader
)
- ** ---------- .> concurrency: 2 (processes)
- *** --- * --- .> events: OFF (enable -E to monitor this worker)
-- ******* ----
--- ***** ----- [queues]
-------------- .> celery: exchange:celery(direct) binding:celery
[Tasks]
. accounts.tasks.forgot_password
[2013-05-15 17:49:45,279: WARNING/MainProcess] C:\Python26\lib\site-packages\dja
ngo_celery-3.0.17-py2.6.egg\djcelery\loaders.py:133: UserWarning: Using settings
.DEBUG leads to a memory leak, never use this setting in production environments
!
warnings.warn('Using settings.DEBUG leads to a memory leak, never '
[2013-05-15 17:49:45,292: WARNING/MainProcess] [email protected] ready.
[2013-05-15 17:49:45,292: INFO/MainProcess] consumer: Connected to django://loca
lhost//.
Traceback (most recent call last):
File "C:\Python26\lib\logging\__init__.py", line 754, in emit
msg = self.format(record)
File "C:\Python26\lib\logging\__init__.py", line 637, in format
return fmt.format(record)
File "C:\Python26\lib\logging\__init__.py", line 428, in format
s = self._fmt % record.__dict__
KeyError: 'processName'
Traceback (most recent call last):
File "C:\Python26\lib\logging\__init__.py", line 754, in emit
msg = self.format(record)
File "C:\Python26\lib\logging\__init__.py", line 637, in format
return fmt.format(record)
File "C:\Python26\lib\logging\__init__.py", line 428, in format
s = self._fmt % record.__dict__
KeyError: 'processName'
Может кто-то пожалуйста, любезно помочь мне скажите мне, если забыли пароль настроен, вероятно, для отправки сообщений электронной почты в фон и почему я получаю эту ошибку KeyError: 'processName'
?
Попробуйте manage.py celeryd --llusvel = info –