Yri*_*uns 6 python django message-queue
例如,我有一个博客基础上Django,我已经有几个功能,为用户login:edit_profile, ,share.
但现在我需要实施一个任务系统.
10 score每天奖励20 score30 score我不想将奖励代码与普通功能代码混合使用.所以我决定使用message queue.伪代码可能如下所示:
@login_required
def edit_profile(request):
user = request.user
nickname = ...
desc = ...
user.save(...)
action.send(sender='edit_profile', payload={'user_id': user.id})
return Response(...)
Run Code Online (Sandbox Code Playgroud)
奖励可以订阅此操作
@receiver('edit_profile')
def edit_profile_reward(payload):
user_id = payload['user_id']
user = User.objects.get(id=user_id)
mission, created = Mission.objects.get_or_create(user=user, type='complete_profile')
if created:
user.score += 20
user.save()
Run Code Online (Sandbox Code Playgroud)
但我不知道这是不是正确的方法.如果是这样,我message queue应该使用什么?django-channel/ django-q或其他什么?如果没有,最佳做法是什么?
如果您正在寻找异步队列,您将需要 Redis 和工作人员的组合。
最常见、也是最简单的库之一是RQ Workers
实现很简单,但您需要将 rq-workers 作为单独的应用程序运行。
它还允许您实现具有不同优先级的不同队列。我将它们用于发送电子邮件或需要更新而不让用户等待的事情(日志等......)
Django-Q是另一个很好的解决方案,其优点是能够使用当前数据库作为队列 - 而且也可以与 Redis 等一起使用...
最后,Celery是它们的祖父。您可以使用 Celeray 安排作业以及异步作业。有点复杂但很好的解决方案。
希望这可以帮助...
| 归档时间: |
|
| 查看次数: |
369 次 |
| 最近记录: |