深入浅出 Django 异步编程
在Django中实现异步编程,可以使用celery这个库。以下是一个简单的例子:
首先,安装celery和相关的消息队列库,比如RabbitMQ或Redis:
pip install celery
pip install redis # 如果使用Redis作为消息队列
然后,在Django项目的根目录下创建一个名为celery.py
的文件,并配置celery:
# celery.py
from __future__ import absolute_import, unicode_literals
from celery import Celery
from django.conf import settings
app = Celery('myproject')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
在settings.py
中添加配置:
# settings.py
CELERY_BROKER_URL = 'redis://localhost:6379/0' # 使用Redis作为消息队列
CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'
接下来,在任何Django app中创建一个名为tasks.py
的文件,并编写异步任务:
# myapp/tasks.py
from __future__ import absolute_import, unicode_literals
from celery import shared_task
@shared_task
def add(x, y):
return x + y
最后,在视图中调用异步任务:
# myapp/views.py
from .tasks import add
def my_view(request):
add.delay(4, 4) # 异步执行加法操作
return HttpResponse('Task queued.')
当调用add.delay(4, 4)
时,add
任务会被Celery放入消息队列,并异步执行。这样,Django就可以实现异步编程,不会阻塞HTTP请求。
评论已关闭