Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.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_Asynchronous_Celery_Scalability - Fatal编程技术网

Python Django和芹菜中的异步逻辑

Python Django和芹菜中的异步逻辑,python,django,asynchronous,celery,scalability,Python,Django,Asynchronous,Celery,Scalability,从这一点出发,我有一个任务: @task() def create_user(data): try: User.objects.get(username=data['username']) return 'Username already exists' except: user = User.objects.create_user(username=data['username'], email=None, password=da

从这一点出发,我有一个任务:

@task()
def create_user(data):
    try:
        User.objects.get(username=data['username'])
        return 'Username already exists'
    except:
        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 profile.token
我对芹菜的理解是,假设有很多请求,这个任务可以放在QUE中,并在一段时间后执行


让我们假设一个移动应用程序正在与此服务器通信。用户将用户名和密码的组合发送到服务器进行注册。服务器只有在处理完任务后才会返回令牌。如果客户没有令牌,就无法登录。因此,我必须等到任务完成后才能发送令牌。所以一切都变成了异步处理。芹菜是如何解决这个问题的?

芹菜应该用于繁重的服务器端任务,如果用户不必等待响应,也不必登录简单任务。

芹菜应该用于繁重的服务器端任务,如果用户不必等待响应,也不必登录简单任务登录。

芹菜用于异步处理(嗯,主要是)。如果您正在执行您描述的操作,那么您必须拥有令牌,用户才能继续。在这种情况下,您必须在启动任务后调用类似于
token=my_task.get()
的东西,将对芹菜的调用视为阻塞调用。然后它是一个阻塞调用,这是不好的(可能),但它被卸载到一个单独的进程中,这可能是一件好事。

芹菜用于异步处理(好的,主要是)。如果您正在执行您描述的操作,那么在用户可以继续之前,您必须拥有令牌。在这种情况下,您必须在启动任务后调用类似于
token=my_task.get()
的东西,将对芹菜的调用视为阻塞调用。然后它是一个阻塞调用,这是不好的(可能),但它被卸载到一个单独的进程,这可能是一件好事