Yeah it seems like something the relay should deal with but it was necessary for now.
Discussion
Can you try relay.nostr.info?
Sure I'll test against it tomorrow.
So I've tried relay.nostr.info and bootstrap my client from it a few times and all seems to work OK for me.
I had an issue with this event b19927cc51e45bff87628a15f8f643f452d67ab9c5b936163c906825be585e34 because python won't let me convert the ticks on this to a date (its year 54460?!)
But that's more my issue, I should probably be dropping this event upfront.
In addition I too a look at the specific case with large number of author, and both the split style on single worked Ok for large number (>1000) on damus relay only the split style returns, though it no longer errors/returns a notice of too many keys so it might return eventually.
with ClientPool('wss://relay.nostr.info') as c:
followers = c.query({
'kinds': [Event.KIND_CONTACT_LIST],
'#p': ['3efdaebb1d8923ebd99c9e7ace3b4194ab45512e2be79c1b7d68d9243e0d2681']
})
ufs = {ContactList.from_event(c).owner_public_key for c in followers}
# this will timeout
metas1 = c.query({
'kinds': [Event.KIND_META],
'authors': list(ufs)
}, timeout=5)
# this will return ok in damus
q = []
for k in util_funcs.chunk(list(ufs),250):
q.append({
'kinds': [Event.KIND_META],
'authors': k
})
metas2 = c.query(q, timeout=5)
print(len(metas1) == len(metas2))