【发布时间】:2019-04-25 05:55:51
【问题描述】:
我编写了一个函数,它从 API 获取一些数据并返回到字典。当我执行它工作正常。问题是当我尝试使用 ray 库在“同一时间”执行此函数两次时。数据从 api 正确获取,但未添加到字典中。
Companies = dict()
def call_company_api(company_id, dictionary):
data = requests.get(API_CALL_COMPANY_URL.format(company_id)).json()
# name = data['data']['krs_podmioty.nazwa'] FULL NAME
name = data['data']['krs_podmioty.nazwa_skrocona']
city = data['data']['krs_podmioty.adres_poczta']
nip = data['data']['krs_podmioty.nip']
community_id = data['data']['krs_podmioty.gmina_id']
county_id = data['data']['krs_podmioty.powiat_id']
voivodeship_id = data['data']['krs_podmioty.wojewodztwo_id']
try:
community = gminy_list[community_id]
county = powiaty_list[county_id]
voivodeship = wojewodztwa_list[voivodeship_id]
except KeyError:
community = community_id
county = county_id
voivodeship = voivodeship_id
dictionary[name] = [city, county, community , voivodeship, nip]
当我执行以下代码时,工作正常
def call_company():
for k in comapanies_list:
call_company_api(k, Companies)
call_company()
print(Companies) --> {'BELKA19': ['Warszawa', 'Warszawa', 'Warszawa', 'Mazowieckie', '5252786971'], 'GSW CONSTRUCTION': ['Kraków', 'Kraków', 'Kraków', 'Małopolskie', '6762564804']}
在这种情况下数据没有添加到字典中,你知道如何解决吗?我尝试为所有 call_items 函数添加单独的字典,但它也不能像我预期的那样正常工作。
ray.init()
@ray.remote
def call_l1_items():
for k in l1:
call_company_api(k, Companies)
@ray.remote
def call_l2_items():
for k in l2:
call_company_api(k, Companies)
ret_id1 = call_l1_items.remote()
ret_id2 = call_l2_items.remote()
ret1, ret2 = ray.get([ret_id1, ret_id2])
print(Companies) --> {}
【问题讨论】: