Ответ 1
Предполагая, что у вас установлены как Python celery, так и django-celery, создайте следующие 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_user
:
create_user(form.cleaned_data)
в
create_user.delay(form.cleaned_data)
В основном create_user
теперь является задачей сельдерея; если у вас есть подходящие пакеты Python, установленные (как упоминалось выше), по коду (реализация, которую вы просите), что это. delay
выполняет вашу функцию асинхронно - то есть ответ HTTP возвращается, не дожидаясь завершения асинхронной задачи.
Локально вы можете запустить процесс демона сельдерея, используя python manage.py celeryd
.
В процессе производства вам необходимо настроить сам процесс сельдерея, используя, например, upstart
, supervisor
или любой другой инструмент для управления жизненным циклом такого процесса.
Подробнее о документах здесь.