我正在学习芹菜.在我的网站上,我让人们注册一个帐户.创建新帐户后,它会自动向其用户电子邮件地址发送激活电子邮件.
一切都运作良好,但现在我想使用Celery异步发送电子邮件.
我使用RabbitMQ作为代理,版本3.1.5和Celery 3.1.7(最新版本),因为他们说这个版本不需要djcelery.所以我只需要安装Celery.
我按照celery的说明在其网站上配置了我的django.
proj
--proj/celery.py
Run Code Online (Sandbox Code Playgroud)
这是我的celery.py:
from __future__ import absolute_import
import os
from celery import Celery
from django.conf import settings
# set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'proj.settings')
app = Celery('proj')
# Using a string here means the worker will not have to
# pickle the object when using Windows.
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
@app.task(bind=True)
def debug_task(self):
print('Request:{0!r}'.format(self.request))
Run Code Online (Sandbox Code Playgroud)
这是我放在app文件夹中的tasks.py:
proj
---proj/celery.py
---app/tasks.py
Run Code Online (Sandbox Code Playgroud)
tasks.py
from __future__ import absolute_import
from celery.decorators import …Run Code Online (Sandbox Code Playgroud) 我有一个简单的数据库查询psycopg2但我不知道为什么它总是显示错误这里是代码
ip ="127.0.0.1"
sql="select count(*) from radacct where nasipaddress=%s"
cur.execute(sql,ip)
Run Code Online (Sandbox Code Playgroud)
然后它会显示出来
TypeError:并非在字符串格式化期间转换所有参数
如果我以这种方式尝试
cur.execute("select count(*) from radacct where nasipaddress=%s" % ip)
Run Code Online (Sandbox Code Playgroud)
它仍然无法正常工作
我怎样才能以正确的方式将参数传递给psycopg2.请帮助我!
我只是为用户注册创建一个表单代码在这里
forms.py
from django import forms
from django.conf import settings
from django.contrib.auth import get_user_model
def lowercase_email(email):
"""
Normalize the address by lowercasing the domain part of the email
address.
"""
email = email or ''
try:
email_name, domain_part = email.strip().rsplit('@', 1)
except ValueError:
pass
else:
email = '@'.join([email_name.lower(), domain_part.lower()])
return email
class SignupForm (forms.ModelForm):
username =forms.CharField(
label='username',required=True,max_length=20,min_length=3)
email = forms.EmailField(
label='email',required=True)
password =forms.CharField(
label='pssword',required=True,max_length=20,min_length=6,widget = forms.PasswordInput)
confirm_password= forms.CharField(
label='confirm_email',required=True,max_length=20,min_length=6,widget = forms.PasswordInput)
class Meta:
model = get_user_model()
fields = ("username","email","password","confirm_password",)
def …Run Code Online (Sandbox Code Playgroud)