繁体   English   中英

在 python 中重复此过程以避开超时问题

[英]Repeat process to dodge timeout problem in python

我正在尝试创建一个 function 来遍历我的区域列表并找到它们的经度和纬度。 但问题是我遇到超时问题,因此我想提示系统休眠大约十秒钟然后重新启动。 我不确定如何在 python 中实现这一点。我知道如何在 R 中实现这一点,但在 python 中。

这是我的试用版,但我不认为这是正确的语法,无法正常工作。

list_of_cities=["Toronto","Chelmsford","San Francisco Bay Area"]

这是我的 function:

from geopy.exc import GeocoderTimedOut 
from geopy.geocoders import Nominatim 
import time

def findGeocode(city): 

    repeate(
        geolocator=Nominatim(user_agent="myemail_address@gmail.com")
        return geolocator.geocode(city) 
    
    if (GeocoderTimedOut): 
        time.sleep(10)
    else
        return findGeocode(city))

如果这是在 R 中,它将类似于:

repeate{
      res=try(geolocator.geocode(city))
      if(res="try-error)
      {
         sys.sleep(10)
      }
         else 
      {
         break
      }
     }

但不确定如何在 python 中执行此操作。

有人可以帮我吗?

你非常接近,因为你已经递归地实现了它。

def findGeocode(city):
    try: geolocator=Nominatim(user_agent="myemail_address@gmail.com")
    except GeocoderTimedOut:
        sleep(10)
        return findGeocode(city)
    return geolocator.geocode(city)

这只会等待然后调用自己直到它工作。

我不熟悉 geopy 并且真的不知道为什么你必须等待 10 秒,但是,你可能会遇到问题,因为睡眠有时似乎停止得比你预期的要多(尝试使用睡眠打印,而不将刷新设置为 True) . 这意味着您可能会遇到程序首先休眠一段时间然后立即执行所有操作的问题。 在这种情况下,您可以在另一个线程中运行该方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM