2017-12-06 17 views
0

私はpython /フラスコを使用しています(フラスコメールからMAILをインポートしています)。ここに私のコードの小さなモジュールがあります。python /フラスコでメールを送信中にネット接続をチェックする

token = s.dumps(email, salt='email-confirm') 
t = url_for('confirm_email', token=token, _external=True) 
msg = Message('Confirm Email', sender='[email protected]', recipients=[email], html=render_template('mail.html', text=t)) 
link = url_for('confirm_email', token=token, _external=True) 
msg.body = 'Your link is {}'.format(link) 
mail.send(msg) 

インターネット接続がオフになっているとき、私は、コードを実行すると、私が手:エラー「socket.gaierror名前解決で[errnoを-3]一時的な障害」を。この例外をキャッチし、「あなたがインターネットに接続していることを確認する」などの何かを表示する方法を教えてください。

except urllib2.URLError as err: 
    return False 

上記のような例外(特定のURLへのアクセスが試行された場合)を捕まえるには、いくつかの方法が役立ちます。では、代わりにFLASKでMAILを使用しているときに、その代わりになるものは何ですか?

また、後で(インターネットが接続されていない場合でも)同様の問題に取り組む必要があるため、より一般的な解決法を提供できる場合は非常に感謝します。

ありがとうございます。

+1

私は理解していませんどのような例外をキャッチするとあなたの問題は...あなたはPythonで例外をキャッチする方法を知っていますか?また、このエラーが発生した場合は、ユーザーではなく接続を失ったサーバーなので、「インターネットに接続していることを確認する」とユーザーに指示することはまったく意味がありません。 –

+0

私は例外をキャッチする方法を知っていますが、この例外はありません。また、ええ、その場合、テキストは別のものかもしれません。基本的には、そのエラーの代わりに何が起こるのかを制御したいと思っています。 –

+0

実際にあなたのサーバーの接続がダウンしている場合、あなたのユーザーはHTTPResponseをまったく取得しない可能性があります...ちょうどと言ってください。 –

答えて

1

I do know how to catch exceptions but not this particular one

まあ、ただ実際には例外と同じように:あなたは特別なケースはerrno 3、単なるテストe.errnoにしたい場合は

>>> import socket 
>>> try: 
...  raise socket.gaierror(3, "wtf") 
... except socket.gaierror as e: 
...  print "got gaiesocket error %s" % e 
... 
got gaiesocket error [Errno 3] wtf 

>>> e 
gaierror(3, 'wtf') 
>>> e.errno 
3 
+0

ありがとうございました。 –

+0

別の質問。この例外(errno 3)は、サーバーがインターネットから切断されている場合にのみ発生します。それ以外の場合は? –

+0

cf https://stackoverflow.com/questions/40238610 –

関連する問題