2016-01-06 28 views
0

我使用以下代碼發送gcm通知。太大的芹菜列表參數

registration_ids是巨大的,因爲它是接收者的數量。

有沒有辦法切斷該參數?

@shared_task 
def gcm_send_json(registration_ids, data, index=0, **kwargs): 

    NUM_REGISTRATION_ID = SETTINGS.get("GCM_MAX_RECIPIENTS") 
    range_limit = index + NUM_REGISTRATION_ID 

    sub_registration_ids = registration_ids[index: range_limit] 

    if not sub_registration_ids: 
     return 

    _gcm_send_json(sub_registration_ids, data, **kwargs) 

    if not kwargs: 
     kwargs = {} 
    kwargs.update({ 
     'index': range_limit 
    }) 

    eta = timezone.now() + datetime.timedelta(minutes=5) 
    gcm_send_json.apply_async(args=[registration_ids, data], kwargs=kwargs, eta=eta) 

我可以registration_ids可能存儲在Redis的,並從gcm_send_json訪問它,並刪除它時,我遍歷整個列表。 (不知道這是最好的解決方案..)

或我可以使用發電機?

回答

0

在Redis中存儲較大的值,並向其傳遞參考通常是最佳方式。 您無法將生成器傳遞給芹菜任務。