0
저는 웹 서비스에 대한 호출을 처리 할 파이썬을 코딩하고 있습니다.Python - 액세스 할 수없는 경우 webservice를 처리하는 방법?
def calculate(self):
market_supply_price = self.__price_to_pay_current_market_supply()
market_supply_price_usd = market_supply_price.get('usd')
market_supply_price_eur = market_supply_price.get('eur')
amount = '%.8f' % ((self.euro - ((self.euro*self.__tax_to_apply())+self.__extra_tax_to_apply()))/market_supply_price_eur)
return {'usd': [market_supply_price_usd, amount], 'eur': [market_supply_price_eur, amount]}
웹 서비스에 대한 호출이 줄에 :
market_supply_price = self.__price_to_pay_current_market_supply()
이 개인 방법은 웹 서비스에 다양한 호출을 수행하고 그 결과를 돌려줘. 내 문제는이 웹 서비스가 많이 실패한다는 것입니다. 호출 중 하나가 실패하면 10 분을 기다렸다가 다시 시도하는 방법을 구현해야합니다. 10 분 후에 다시 실패하면 30 분을 기다렸다가 다시 시도하고 30 분 후에 다시 실패하면 구현할 것입니다. 60 분을 기다리십시오 ...
calculate() 메소드에서 이와 같은 것을 구현하는 최선의 방법은 무엇입니까?
나는 이와 비슷한 것을 구현했지만 잘못되었거나해야 할 방법이 아닙니다.
def calculate(self):
try:
market_supply_price = self.__price_to_pay_current_market_supply()
except:
pass
try:
time.sleep(600)
market_supply_price = self.__price_to_pay_current_market_supply()
except:
pass
try:
time.sleep(600)
market_supply_price = self.__price_to_pay_current_market_supply()
except:
pass
try:
time.sleep(1200)
market_supply_price = self.__price_to_pay_current_market_supply()
except:
sys.exit(1)
market_supply_price_usd = market_supply_price.get('usd')
market_supply_price_eur = market_supply_price.get('eur')
amount = '%.8f' % ((self.euro - ((self.euro*self.__tax_to_apply())+self.__extra_tax_to_apply()))/market_supply_price_eur)
return {'usd': [market_supply_price_usd, amount], 'eur': [market_supply_price_eur, amount]}
올바르게 수행하는 방법에 대한 단서가 있습니까?
최고 감사 카드 :
* 폴링 및 교차 손가락을 계속 사용할 경우 고려하십시오. 패턴이 2-3 번 이상 반복 될 때마다 적색 플래그가 올려 져야합니다. 코드를 간단하게 만들기 위해'market_supply_price'라는 코드를 자신의 함수에 넣으므로 성공시 즉시'return'을 사용할 수 있습니다. 그런 다음 그 설문이 어떻게 "다소"인지를 볼 수 있습니다 일반적인". 그러나 내 * 첫 번째 경향은 다음과 같습니다. 웹 서비스 *에 액세스 할 수 있는지 확인하거나 실패하면 (실패를 기록하고 나중에 전체 프로세스를 다시 시작). 그렇지 않으면 코드가 단지 더 큰 문제를 은폐하고 있습니다. – user2864740
답장 user2864740 주셔서 감사합니다. 나는 당신의 견해를 봅니다. 나는 그것을 실패하게하고, 그것을 기록하고 나중에 다시 시작함으로써 문제를 처리하려고 노력할 것이다. 감사. –
별도의 스레드 또는 프로세스를 사용하여 웹 서비스의 결과를 폴링하고 예를 들어 웹 서비스에 저장하는 것이 좋습니다. 데이터베이스. 여러 계층의 블록을 제외하고 중첩시키지 말고 스레드가 잠자기 시간 동안 변수를 사용하여 특정 레벨 (예 : 1 시간. – Stefan