I have the following piece of code:
def is_it_bad(word):
try:
res = next((item for item in all_names if str(word) in str(item["name"])))
except:
res = {'name':word, 'gender':2}
return res
It looks like It is blocking my async function that is calling is_it_bad. I'm not very familiar with async, is there any way to make this function non-blocking?
Function calling is_it_bad:
async def get_genders_by_dict(res):
letters = re.compile('[^a-zA-Z\ ]')
fname = unidecode(str(letters.sub('', res['full_name'])).lower())
fname = letters.sub('', res['username']).lower() + ' ' + fname + ' ' + fname.replace(' ', '')
fname = fname.split(' ')
genders = []
for j in fname:
if len(j) > 2:
print(j)
genders.append(is_it_bad_tst('_' + j + '_')['gender'])
for k in genders:
if int(k) != 2:
gender = k
print('GOOD: ', '_' + j + '_', gender)
async def get_genders_by_dict_main(loop):
tasks = [get_genders_by_dict(res) for res in results]
await asyncio.gather(*tasks)
loop = asyncio.get_event_loop()
loop.run_until_complete(get_genders_by_dict_main(loop))