我正在用芹菜和芹菜拍打来运行我的功能。
我有一个错误:(返回的对象不是json格式的)
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列表)
@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)发布于 2022-08-30 03:48:48
通过调用make_requests.delay,您得到了AsyncResult(文档)。如果希望从make_request任务获得返回值,可以使用collect方法。例如:
@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)https://stackoverflow.com/questions/73535354
复制相似问题