Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 芹菜和Django是一个简单的例子_Python_Django_Celery_Scalability - Fatal编程技术网

Python 芹菜和Django是一个简单的例子

Python 芹菜和Django是一个简单的例子,python,django,celery,scalability,Python,Django,Celery,Scalability,让我们以一个简单的Django为例 app/models.py from django.db import models from django.contrib.auth.models import User class UserProfile(models.Model): user = models.OneToOneField(User) token = models.CharField(max_length=32) app/views.py from django.htt

让我们以一个简单的Django为例

app/models.py

from django.db import models
from django.contrib.auth.models import User

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    token = models.CharField(max_length=32)
app/views.py

from django.http import HttpResponse
from django.views.decorators.csrf import csrf_exempt
from forms import RegisterForm
from utils.utilities import create_user

@csrf_exempt
def register_view(request):
    if request.method == 'POST':
        form = RegisterForm(request.POST)
        if form.is_valid():
            create_user(form.cleaned_data)
            return HttpResponse('success')
utils/utilities.py

def create_user(data):
    user = User.objects.create_user(username=data['username'], email=None, password=data['password'])
    user.save()
    profile = UserProfile()
    profile.user = user
    profile.token = generate_token()
    profile.save()

在这个例子中,有人能提供芹菜的实现吗?假设这是一个每秒有数百个请求的大型项目。

假设您同时安装了Python和,请在应用程序下创建以下
tasks.py
文件:

utils/tasks.py

from celery import task
# other imports

@task()
def create_user(data):
    user = User.objects.create_user(
        username=data['username'], email=None, password=data['password']
    )
    user.save()
    profile = UserProfile()
    profile.user = user
    profile.token = generate_token()
    profile.save()

    return None
删除上面示例中的
utils/utilities.py
文件

views.py中的代码中更改
create\u user
调用:

create_user(form.cleaned_data)
致:

基本上,
create\u user
现在是一项芹菜任务;如果您安装了正确的Python包(如上所述),那么代码方面(您要求的实现)就是这样<代码>延迟
异步执行您的函数-即返回HTTP响应而不等待异步任务完成

您可以在本地使用
python manage.py celeryd
运行芹菜守护进程

在生产过程中,您必须使用例如
upstart
supervisor
或任何其他工具来设置芹菜流程本身,以控制此类流程的生命周期


进一步的细节记录在案。

我会为此给你金徽章!非常感谢@TeodorScorpan谢谢:)我做了这个django芹菜模板项目,之前我花了一些时间试图让任务显示在django admin中:希望它能帮助别人!:)这是一个有用的解决方案。谢谢,只是你知道,直接要求举例往往被认为是离题的,因为他们经常来自那些之前没有做过任何研究的人。这显然不适用于你,但值得注意的是,这条总的指导原则——当你得到mo时,请参阅该部分。
create_user.delay(form.cleaned_data)