Pygithub: Pengecualian 401 Bad Credentials acak baru-baru ini

Dibuat pada 21 Mar 2013  ·  4Komentar  ·  Sumber: PyGithub/PyGithub

Hai,

PyGithub adalah bagian dari https://github.com/Borkason/google-code-issues-migrator , yang merupakan cabang dari proyek yang ditinggalkan, dan baru-baru ini saya mendapatkan pengecualian 401 Kredensial Buruk secara acak dengan skrip itu. Pengecualian ini tidak muncul di masa lalu, itulah mengapa saya pikir itu mungkin ada hubungannya dengan bagaimana PyGithub menangani Kredensial. Mungkin Github mengubah sesuatu dalam 1 atau 2 bulan terakhir?

Saya belum bisa menemukan pola apa pun dalam munculnya pengecualian. Saya pikir itu acak.

Inilah yang saya lakukan
Saya mengautentikasi sekali dalam __main__ : https://github.com/Borkason/google-code-issues-migrator/blob/master/migrateissues.py#L493.
Kemudian saya mulai memigrasi semua masalah. Skrip mengambil semua masalah, melakukan beberapa hal dengan api kode google dan kemudian membuat masalah baru di github, termasuk komentar. Biasanya selama pembuatan masalah, saya menerima pengecualian. Selalu di titik acak (terkadang setelah menambahkan 2 masalah, terkadang setelah menambahkan 100 masalah ...

_Saya harap Anda dapat membantu dengan cara apa pun._

Ini pengecualian

Traceback (most recent call last):
  File "migrateissues.py", line 529, in <module>
    process_gcode_issues(existing_issues)
  File "migrateissues.py", line 332, in process_gcode_issues
    add_comments_to_issue(github_issue, gid)
  File "migrateissues.py", line 236, in add_comments_to_issue
    existing_comments = [ comment.body for comment in github_issue.get_comments() ]
  File "/usr/local/lib/python2.7/dist-packages/PyGithub-1.12.2-py2.7.egg/github/PaginatedList.py", line 35, in __iter__
    newElements = self.__grow()
  File "/usr/local/lib/python2.7/dist-packages/PyGithub-1.12.2-py2.7.egg/github/PaginatedList.py", line 47, in __grow
    newElements = self._fetchNextPage()
  File "/usr/local/lib/python2.7/dist-packages/PyGithub-1.12.2-py2.7.egg/github/PaginatedList.py", line 104, in _fetchNextPage
    headers, data = self.__requester.requestJsonAndCheck("GET", self.__nextUrl, self.__nextParams, None)
  File "/usr/local/lib/python2.7/dist-packages/PyGithub-1.12.2-py2.7.egg/github/Requester.py", line 84, in requestJsonAndCheck
    return self.__check(*self.requestJson(verb, url, parameters, input))
  File "/usr/local/lib/python2.7/dist-packages/PyGithub-1.12.2-py2.7.egg/github/Requester.py", line 92, in __check
    raise GithubException.GithubException(status, output)
github.GithubException.GithubException: 401 {u'message': u'Bad credentials'}
question

Semua 4 komentar

Halo!

Saya juga mengalami masalah ini dalam beberapa hari terakhir. Itu pasti bug di pihak GIthub, itu tidak terkait dengan PyGithub. Itu dapat direproduksi dengan skrip shell berikut (sebut dengan login dan kata sandi Anda sebagai argumen):

#!/bin/sh

USER=$1
PASSWORD=$2

CONTINUE=1

while [ $CONTINUE == "1" ]
do
    OUTPUT=$(curl --include https://$USER:[email protected]/user 2>&1)

    if echo "$OUTPUT" | grep "200 OK" >/dev/null
    then
        echo OK
    else
        date
        echo "$OUTPUT"
        CONTINUE=0
    fi
done

Ini mengeluarkan sejumlah "OK" dan diakhiri dengan pesan kesalahan yang mengarah ke pengecualian yang dilemparkan oleh PyGithub:

[...]
OK
OK
OK
OK
Thu Mar 21 20:35:50 RST 2013
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    35  100    35    0     0     57      0 --:--:-- --:--:-- --:--:--    70HTTP/1.1 401 Unauthorized
Server: GitHub.com
Date: Thu, 21 Mar 2013 19:35:53 GMT
Content-Type: application/json; charset=utf-8
Connection: keep-alive
Status: 401 Unauthorized
X-GitHub-Media-Type: github.beta
Content-Length: 35

{
  "message": "Bad credentials"
}

Anda mungkin ingin mengirimkan bug ke Github secara langsung.

Kemarin saya tidak punya masalah, hari ini sepenuhnya disadap lagi.

Saya melakukan peretasan cepat dan kotor untuk mengatasi masalah Github di PaginatedList.py

def _fetchNextPage(self):
        myWorkaround = True
        while myWorkaround:
                try:
                        headers, data = self.__requester.requestJsonAndCheck("GET", self.__nextUrl, self.__nextParams, None)
                        myWorkaround = False
                except:
                        pass

        […]

Hari ini saya juga mengalami masalah pada skrip sederhana yang hanya melakukan beberapa permintaan (non-paginasi) ke API. Ini sama sekali tidak penting bagi saya, jadi saya tidak akan meluangkan waktu untuk menghubungi GitHub sendiri.

Masalahnya lebih umum daripada paginasi, jadi jika Anda benar-benar membutuhkan solusi, Anda dapat memilih melakukannya di Requester.py :

Ganti baris 143

status, responseHeaders, output = self.__requestRaw(verb, url, requestHeaders, encoded_input)

oleh sesuatu seperti

status = 401
retries = 5
while retries > 0 and status == 401:
    status, responseHeaders, output = self.__requestRaw(verb, url, requestHeaders, encoded_input)
    retries -= 1

(Saya belum menguji sama sekali)

Terima kasih telah memberikan cuplikan itu: +1:
Saya menghubungi Github, tetapi mereka tampaknya tidak dapat mereplikasi masalah itu. Tetapi karena saya mendapat solusi, saya juga tidak akan menginvestasikan waktu lagi :)

Bersulang.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

psychemedia picture psychemedia  ·  5Komentar

BBI-YggyKing picture BBI-YggyKing  ·  5Komentar

hren-ron picture hren-ron  ·  6Komentar

diegotejadav picture diegotejadav  ·  5Komentar

xpdable picture xpdable  ·  5Komentar