2016-01-06 2 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, и передача ссылки на него, как правило, является лучшим способом. Вы не можете передать генератор в задачу сельдерея.

Смежные вопросы