2013-05-15 130 views
0

我一直在试图安排一个任务,在后台做芹菜,但我不断遇到问题。Django芹菜错误

什么我迄今所做

我通过easy_install安装celerydjango-celery,加入到INSTALLED_APPS快速参考:

'djcelery', 
'kombu.transport.django', 

进口下列就跑执行syncdb:

import djcelery 
djcelery.setup_loader() 
BROKER_URL = "django://" 

我试图在后台运行的任务是密码重置。所以当用户忘记密码时,我想让发送电子邮件任务在后台运行,所以我所做的是 我将我的forgot_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'

+0

尝试manage.py celeryd --loglevel = info –

回答

1

首先有使用芹菜发送电子邮件的简单方法:

django-celery-email

其次,你的任务是错误的。任务是后台工作,而不是视图。它应该执行最后的操作。在你的情况下,这是发送电子邮件

+0

我确实把任务放在task.py – donkeyboy72