我希望将一些长查询移动到Celery的异步任务中,并使用AJAX检索额外信息。现在我得到的QuerySet像这样:
brands = Brand.objects.filter(shops__shop_name__in=[shop])
任务:
@task()
def brand_count(querystr):
querystr.annotate(amount_of_products=Count('products'))
我希望做类似于这里的事情:
task_run = brand_count.delay(brands)
问题是:如何将 QuerySet 传递给 Celery 任务?现在会出现无法完成此操作的错误。
我已经找到了一个可能使用
pickle
的解决方案,但是我无法找到正确的使用方法。特别是在query = pickle.loads(s)
中,# 假设 's' 是腌制的字符串。
是什么意思。