2
我試圖儘可能快地拉動信息一大堆,並有下面的代碼,以幫助它:Django的對象和多
pool = Pool()
products = Post.objects.filter(affiliate_product_url=None)
res = pool.map_async(get_info, products)
w = res.get()
pool.close()
當運行它返回一個
File "<console>", line 1, in <module>
File "scripts/image_affiliate_pull.py", line 113, in <module>
w = res.get()
File "C:\Python27\lib\multiprocessing\pool.py", line 558, in get
raise self._value
TypeError: expected string or Unicode object, NoneType found
從我的搜索這可能與酸洗有關嗎?我如何才能最好地使它工作?爲什麼它以這種方式工作的解釋將是非常寶貴的:D
'TypeError'正在'get_info'中引發。由於'multiprocessing'的侷限性,儘管如此,你不能從get_info中獲得回溯。將'get_info'封裝在'try' /'except'塊中,並在'except'塊內調用'traceback.print_exc()'來查看真正的回溯。它應該可以幫助你弄清楚什麼是錯的。 – dano 2014-09-18 23:58:10
我加了。我知道get_info的工作原理是因爲我可以通過在Post.objects.filter(affiliate_product_url = None)]中用'[get_info(p)for p'線性調用函數來完美運行它,所以我認爲它純粹是一個多處理/ map_async問題。你怎麼看? – robert 2014-09-19 00:16:52
*絕對* *來自'get_info'。引發異常的那行是'ApplyResult.get'的部分,它引發了從子進程返回的異常對象。您需要在子進程本身中打印完整的回溯,以找出故障實際發生的位置。在'get_info'中有一個對象試圖訪問子進程中未設置的對象。你在哪個平臺上運行這個平臺?你想在'get_info'中使用任何全局變量嗎? – dano 2014-09-19 00:24:50