ソフトウェア アプリケーションを設計するために Python でコードを書いています。コードに次の機能を追加したい:
ユーザーがソフトウェアの使用を開始すると、ping()
関数が実行され、インターネットに接続してデータを取得しようとします。ネットワークが利用できない場合は、ネットワークの可用性を継続的にチェックしてデータをフェッチする必要があります。それping()
がネットワークを継続的にチェックしている間、私は私のソフトウェアアプリケーションに通常のことをさせたいと思っています。
私のコードは次のとおりです。
def ping():
global lst1
if network_connection() is True:
links = lxml.html.parse("http://google.com").xpath("//a/@href")
for url in links:
lst1.append(url)
else:
ping()
def network_connection():
network=False
try:
response = urllib2.urlopen("http://google.com", None, 2.5)
network=True
except urllib2.URLError, e:
pass
return network
アプリケーションの起動時に呼び出しping()
、関数内ping()
で再帰呼び出しを行っています。その場合、ネットワーク接続が利用可能になり、アプリケーションが開始されなくなるまで、コードがこの再帰呼び出しでスタックするため、明らかに間違っています。
ネットワークの可用性をチェックし、残りのコードを同時に実行するという、両方のことを並べて実行できる方法はありますか?