У меня есть задача загрузки файла Celery. Несколько задач в моем основном приложении будут использовать эту задачу, и я пытаюсь абстрагировать ее, чтобы одну и ту же задачу можно было использовать для разных целей. В один момент в моей задаче у меня было
if r.ok:
results = [result for result in r.json()['ResultSet']['Result']
if all([condition(result) for condition in conditions])]
И я думал, что собираюсь быть умным и передать его
conditions=[lambda result: 'json' not in result['Name']]
Только я не могу, потому что это заставляет меня говорить об ошибкемне, что объекты типа функции не сериализуемы.
На данный момент я изменил строку в задаче на:
if r.ok:
results = [result for result in r.json()['ResultSet']['Result']
if all([excluded not in result[attr] for attr, excluded in exclusions.items()])]
И я передаю ее exclusions={'Name':'json'}
.
Будет очень обидно, если я начну хотеть исключать файлы по другим причинам, кроме того, что в некоторых аспектах ответа нет конкретной текстовой строки. Я задавался вопросом, есть ли у кого-нибудь идеи для сериализуемой версии моего сильно обобщенного параметра условий.