0
我有一個collect_data
方法從另一種方法create
調用。我想異步調用這個collect_data
方法,因爲用戶不需要等待函數create的響應。調用方法異步從另一種方法
def create(obj):
"do something in database"
"return ID for newly created data in DB"
collect_data(obj, newly_created_id)
return newly_created_id
def collect_data(obj, newly_created_id):
"collect data from other methods."
"Put the data in MQ."
所以,我希望異步運行此COLLECT_DATA,使用戶不必等待newly_created_id直到數據被放在ActiveMQ的。
我嘗試了多處理,如下所示。
import multiprocessing as mp
def create(obj):
pool = mp.Pool()
"do something in database"
"return ID for newly created data in DB"
pool.apply_async(collect_data, args=(obj, newly_created_id))
return newly_created_id
但是,這似乎並不是異步運行。爲了測試我在collect_data中插入了睡眠2分鐘。函數create不會立即返回newly_created_id。
有人可以請幫忙。
嘗試'map_async' – quikst3r
因爲它是現在(+休眠)異步事情發生之前輸出的ID,它返回即刻。 – bereal
@Bereal,我需要在哪裏添加睡眠?你可以解釋嗎 ? –