我使用芹菜w/ Django来处理某个任务,该任务返回需要放入模型记录中的JSON值。现在,我看到了将它保存在Django数据库中的两个选项:
update
记录。django-db
结果后端,该后端将位于芹菜自己的task_result表中。这意味着我必须在记录中持久化AsyncResult Id,每当客户端请求记录时,我将查找并查看进程是否已经完成。在我看来,选择1似乎更好,但由于我最近几年没有与芹菜合作,我想知道它是否有缺点,和/或哪种情况更适合选择2。
谢谢!
发布于 2017-04-12 21:01:57
不,第一种方法没有什么问题。
tasks.py从app.models导入your_model从芹菜进口任务
@task
def update_model(id):
model_obj = your_model.objects.get(id=id)
#do your stuffs here...
views.py
from app.tasks import update_model
def your_view(request):
#your code
update_model.delay(id_of_the_instance_you_want_to_update)
可以将此示例代码用于数据库中的原子提交。如果你担心。(取自芹菜文档)
from functools import partial
from django.db import transaction
from .models import Article, Log
from .tasks import send_article_created_notification
def create_article(request):
with transaction.atomic():
article = Article.objects.create(**request.POST)
# send this task only if the rest of the transaction succeeds.
transaction.on_commit(partial(
send_article_created_notification.delay, article_id=article.pk))
Log.objects.create(type=Log.ARTICLE_CREATED, object_pk=article.pk)
https://stackoverflow.com/questions/43381473
复制相似问题