Django Celery如何进行任务授权
Django Celery 可以使用任务授权来限制哪些用户可以执行特定的任务。这是非常有用的,特别是当你拥有一个高度安全的应用程序时。
首先,在 Django 中定义一个任务可以像这样:
from celery import shared_task @shared_task def send_email(to, subject, message): # 发送电子邮件的逻辑
要授权这个任务,我们需要定义一个 celery_auth 模块,它将包含授予权限的功能。我们将使用 Django 的 authentication 库来限制哪些用户可以执行任务。
from django.contrib.auth.decorators import user_passes_test def is_admin(user): return user.is_staff admin_required = user_passes_test(is_admin)
这个函数仅允许具有 staff 权限的用户执行任务。
现在,我们可以使用 celery_auth 模块来授权任务:
from celery import shared_task from celery_auth import admin_required @shared_task @admin_required def send_email(to, subject, message): # 发送电子邮件的逻辑
现在,只有拥有 staff 权限的用户才可以执行 send_email 任务。
代码演示:
- 定义任务
from celery import shared_task @shared_task def print_message(message): print(message)
- 定义 celery_auth 模块:
from django.contrib.auth.decorators import user_passes_test def is_allowed(user): return user.username == "pidancode.com" allowed_user = user_passes_test(is_allowed)
- 使用 celery_auth 模块授权任务
from celery import shared_task from celery_auth import allowed_user @shared_task @allowed_user def print_message(message): print(message)
现在,只有用户名为“pidancode.com”的用户可以执行 print_message 任务。
相关文章