首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >芹菜: AsyncResult类型的对象不是JSON可序列化的

芹菜: AsyncResult类型的对象不是JSON可序列化的
EN

Stack Overflow用户
提问于 2022-08-29 22:40:32
回答 1查看 400关注 0票数 0

我正在用芹菜和芹菜拍打来运行我的功能。

我有一个错误:(返回的对象不是json格式的)

代码语言:javascript
运行
复制
celery_1_a510f09c95a3 | [2022-08-30 01:30:00,069: ERROR/ForkPoolWorker-8] Task 
parser_app.views.periodic_exctract_urls[d65eb6a3-187b-4f48-afe6-b7df101cdbcd] raised 
unexpected: EncodeError(TypeError('Object of type AsyncResult is not JSON serializable'))

My code (第一个函数返回一个ints列表)

代码语言:javascript
运行
复制
@shared_task()
def periodic_exctract_urls():
    print(f"{datetime.datetime.now()} Start periodic_exctract_urls")
    celery_results = []
    film_name_queries = SearchQuery.objects.filter(is_site_search=False)
    url_queries = SearchQuery.objects.filter(is_site_search=True)
    for film in film_name_queries:
        celery_results.append(make_requests.delay(str(film.name)))
    
    for url in url_queries:
        for film in film_name_queries:
            celery_results.append(make_requests.delay(
                f"site:{url.name} {film.name}"
            ))

    task_ids = []
    task_ids.extend([result.collect() for result in celery_results])
    return task_ids
    
    @shared_task()
    def make_requests(search_text) -> int:
        ...
        return int(created_task.pk)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-30 03:48:48

通过调用make_requests.delay,您得到了AsyncResult(文档)。如果希望从make_request任务获得返回值,可以使用collect方法。例如:

代码语言:javascript
运行
复制
@shared_task()
def periodic_exctract_urls():
    print(f"{datetime.datetime.now()} Start periodic_exctract_urls")
    task_ids = []
    film_name_queries = SearchQuery.objects.filter(is_site_search=False)
    url_queries = SearchQuery.objects.filter(is_site_search=True)
    results = []
    for film in film_name_queries:
        results.append(make_requests.delay(str(film.name)))
    ...
    task_ids.extend([result.collect() for result in results])
    return task_ids


@shared_task()
def make_requests(search_text) -> int:
    ...
    return int(created_task.pk)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73535354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档