Saya menggunakan urllib.request untuk membuka sumber halaman dengan Python 3.2.1, tetapi saya mendapatkan pesan kesalahan yang mengatakan urllib.error.HTTPError: HTTP Error 503: Service Unavailable. Silakan temukan kode dan kesalahan di bawah ini.

Kode

import re
import urllib.request

html = urllib.request.urlopen("http://www.pythonchallenge.com/pc/def/ocr.html").read().decode()

print (html)

Kesalahan

Traceback (most recent call last):
  File "I:/Private/nabm/python/python_challenge/python_challenge_2.py", line 4, in <module>
    html = urllib.request.urlopen("http://www.pythonchallenge.com/pc/def/ocr.html").read().decode()
  File "C:\appl\Python\3.2.1\lib\urllib\request.py", line 138, in urlopen
    return opener.open(url, data, timeout)
  File "C:\appl\Python\3.2.1\lib\urllib\request.py", line 375, in open
    response = meth(req, response)
  File "C:\appl\Python\3.2.1\lib\urllib\request.py", line 487, in http_response
    'http', request, response, code, msg, hdrs)
  File "C:\appl\Python\3.2.1\lib\urllib\request.py", line 413, in error
    return self._call_chain(*args)
  File "C:\appl\Python\3.2.1\lib\urllib\request.py", line 347, in _call_chain
    result = func(*args)
  File "C:\appl\Python\3.2.1\lib\urllib\request.py", line 495, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 503: Service Unavailable

Process finished with exit code 1

Adakah yang bisa melihat apa yang bisa menyebabkan kesalahan ini?

1
Nabeel M. 9 Agustus 2017, 16:45

2 jawaban

Jawaban Terbaik

Kesalahan HTTP 503 berarti server tidak dapat merespons pada saat itu, baik karena kelebihan beban atau karena menolak koneksi Anda. Dengan kata lain, tidak ada yang dapat Anda ubah dalam kode Anda untuk memperbaikinya.

1
BoarGules 9 Agustus 2017, 17:06

Aku tahu sudah lama sejak tanggal itu. Tetapi saya akan memposting bagaimana saya menangani "Kesalahan HTTP 503" jika itu dapat membantu orang lain. Pertama-tama, saya memasukkan request.urlretrieve(...) ke dalam blok coba untuk menangkap kesalahan. Dalam kasus saya, memang benar bahwa server yang saya coba akses membutuhkan waktu untuk menangani permintaan. (Server yang saya akses bukan Amazon.com atau sejenisnya yang dikatakan mencegah program mengakses kontennya.) Dengan blok try, jika terjadi pengecualian, saya membuat program menunggu selama 20 detik menggunakan time.sleep (20). Hal ini memungkinkan program saya untuk menyelesaikan.

0
longneck 17 Juli 2019, 20:43