Jupyter-Notizbuch speichert nicht: Argument '_xsrf' fehlt im Beitrag

158

Ich habe ungefähr 26 Stunden lang ein Skript auf Jupyter-Notizbüchern ausgeführt. Ich habe meinen Computer nicht wirklich für andere Zwecke verwendet, aber es muss dieses Programm ausgeführt werden, das ca. 30 Stunden dauert. Nach ungefähr 21 Stunden hörte es auf zu speichern und mein Terminal hatte Folgendes:

403 PUT /api/contents/[file.ipynb] (::1): '_xsrf' argument missing from POST

Dabei ist [file.ipynb] der Speicherort meines Jupyter-Notizbuchs. Es heißt auch:

'_xsrf' argument missing from post

wieder im oberen rechten Teil des Notizbuchs. Das Programm läuft noch und ich möchte das Jupyter-Notebook nicht neu starten und muss das Programm erneut ausführen, da ich eine Frist habe. Kann ich noch etwas tun?

Ich verwende Google Chrome, habe aber weder die LastPass-Erweiterung noch% -Zeichen in meinem Code, wie in einem anderen Beitrag vorgeschlagen.

Vielen Dank für jede Hilfe!

VP
quelle
15
Es gibt Online-Diskussionen zu diesem Thema, wenn Sie eine Suche durchführen. Ein Vorschlag, den ich gemacht habe, ist, dasselbe Notizbuch in einem neuen Browserfenster zu öffnen, wodurch das Problem behoben wird. Dann können Sie das neue Fenster schließen und im vorherigen Fenster weiterarbeiten.
AlexK
Danke @AlexK, das löst das gleiche Problem auf meinem MBP.
RandomWalker

Antworten:

295

Der einfachste Weg, den ich gefunden habe, ist folgender:

https://github.com/nteract/hydrogen/issues/922#issuecomment-405456346

Öffnen Sie einfach ein anderes (nicht laufendes, vorhandenes) Notizbuch auf demselben Kernel, und das Problem ist auf magische Weise behoben. Sie können die Notizbücher, in denen zuvor der _xsrfFehler angezeigt wurde, erneut speichern .

Wenn Sie die Jupyter-Homepage bereits geschlossen haben, finden Sie auf dem Terminal, von dem aus Jupyter gestartet wurde, einen Link dazu.

caxcaxcoatl
quelle
21
Das hat mir den Tag gerettet. Wenn ich nicht auf diese Lösung gestoßen wäre, wären 4 Tage Arbeit verloren gegangen. Vielen Dank!
Hari Dattada
14
Ich musste kein neues Notizbuch öffnen. Stattdessen habe ich den Baum wieder geöffnet und den Kernel wieder verbunden. Irgendwann habe ich auch den Kernel neu gestartet.
user650654
1
Ich durfte nicht einmal ein neues Notizbuch öffnen, bis ich die Notizbuchliste aktualisiert habe. Danach öffnete ich ein neues Notizbuch und der Fehler war verschwunden.
Pavindu
2
Beachten Sie, dass für die Problemumgehung erforderlich ist, dass das Notizbuch zuvor erstellt wurde. Öffnen Sie daher ein anderes vorhandenes nicht laufendes Notizbuch, erstellen Sie kein neues oder öffnen Sie ein laufendes Notizbuch. Beide führen zu demselben Fehler.
Mirekphd
5
Deshalb liebe ich Stackoverflow
Albert Chen
77

Die Lösung, auf die ich gestoßen bin, scheint zu einfach, aber sie hat funktioniert. Gehen Sie zur Startseite / tree aka Jupyter und aktualisieren Sie den Browser. Hat funktioniert.

GDB
quelle
3
Dies funktionierte für mich, während die Lösung zum Öffnen eines anderen Notebooks in meinem Fall fehlschlug.
DISC-O
Gott sei Dank kann ich sehen, welche Beiträge ich bewertet habe, damit ich weiß, welche Lösung ich verwenden soll, wenn ich vergesse und in einem Jahr zurückkomme.
Eric
7

Ich benutze täglich Jupyter-Notizbücher und hatte dieses Problem noch nie zuvor erlebt ... bis heute. Ich hatte das Notebook den ganzen Tag geöffnet, aber es lief nichts und hörte dann ohne ersichtlichen Grund mit der '_xsrf' argument missing from POSTFehlermeldung oben rechts auf, automatisch zu speichern . Zu Ihrer Information - dies ist ein Python3-Notizbuch.

Ich kenne die Ursache dieses Problems nicht, aber ich habe kürzlich meine Python3-Version auf 3.7.2 aktualisiert und alle meine Site-Pakete auf die neueste Version vor einigen Tagen aktualisiert, was möglicherweise die Ursache sein könnte.

Als Lösung habe ich, wie im Kommentar von @AlexK vorgeschlagen, dasselbe Notizbuch in einem neuen Fenster (tatsächlich ein anderer Browser) mit geöffnet

jupyter notebook list

im Terminal, um die URL mit dem Login-Token zu erhalten.

Dies führte dazu, dass ich das Notebook wieder geöffnet und speicherbar hatte, aber die Informationen, die ich seit dem letzten erfolgreichen automatischen Speichern eingegeben hatte, fehlten. Zum Glück war meine kaputte Instanz noch offen und funktionierte neben dem Speichern, sodass ich die Informationen einfach kopieren und einfügen und dann auf Speichern klicken konnte. Lassen Sie also die defekte Instanz offen, wenn Sie dies versuchen!

Biggsy
quelle
3

Wenn ich auf die Schaltfläche "Speichern" klicke, tritt dieser Fehler auf. Basierend auf den Antworten in diesem Beitrag und anderen Websites habe ich gerade die Lösung gefunden. Mein Jupyter Notebook ist von Pip installiert. Ich greife darauf zu, indem ich in die Windows-Befehlszeile 'jupyter notebook' eingebe.

(1) Öffnen Sie ein neues Befehlsfenster und dann ein neues Jupyter-Notizbuch. Versuchen Sie erneut, im alten Notizbuch zu speichern. Diesmal lautet der Fehler "Fehler: Verboten".

(2) Klicken Sie dann im alten Notizbuch auf "Herunterladen als". Es erscheint ein neues Fenster, in dem Sie nach dem Token gefragt werden.

Geben Sie hier die Bildbeschreibung ein

(3) Öffnen Sie ein anderes Befehlsfenster und dann ein anderes Jupyter-Notizbuch. Geben Sie "Jupiter-Notizbuchliste" ein. Kopieren Sie den Code nach "token =" und vor :: in das Feld, das Sie gerade gesehen haben. Sie können diese Zeit sparen. Wenn dies fehlschlägt, können Sie ein anderes Token in der Liste ausprobieren

Richard Liang
quelle
Das hat es für mich getan, danke! Ich wollte nur den letzten Schritt klären - ich brauchte eine Minute, um zu entschlüsseln, was Sie meinten. Der Befehl jupyter notebook listspuckt eine lange URL aus, von der ein Teil eine lange Zeichenfolge ist, die zwischen token=und angezeigt wird ::. Kopieren Sie diese Zeichenfolge aus Schritt (2) und fügen Sie sie in das Feld "Passwort oder Token" ein. Der Fehler "Verboten" im ursprünglichen Jupyter-Notizbuch wird behoben.
Jorge Aurelio Menendez
2

Eine Problemumgehung zur Lösung dieses Problems ist:

  1. Laden Sie das Notizbuch herunter, das Sie nicht speichern können, indem Sie zu: Datei -> Herunterladen als -> Notizbuch (ipynb) gehen.

  2. Öffnen Sie das heruntergeladene Notizbuch, indem Sie auf der Benutzeroberfläche des Jupyter-Browsers auf die heruntergeladene Datei klicken

Jetzt sollten Sie in der Lage sein, dieses Notizbuch über die Jupyter-Benutzeroberfläche zu speichern (oder umzubenennen)

Saurabh Verma
quelle
Das Öffnen eines anderen Notizbuchs hat es für mich nicht gelöst, aber das hat es geschafft (dh das nb heruntergeladen)
Alex
2

In meinem Fall wurde dieses Problem gelöst, indem Sie auf "Kernel" (oben auf den Notebooks) und dann auf "Reconnect" klicken.

Toru Kikuchi
quelle
2

Die einzige Lösung, die für mich funktioniert hat, war:

  1. Ich habe eine neue Registerkarte in Chrom geöffnet
  2. Ich habe eingefügt: http: // localhost: 8888 /? Token = ......
  3. dann ging ich zu meinem ursprünglichen Notizbuch und konnte es speichern
Salconte
quelle
1

Ich habe das gleiche Problem (es ist unmöglich, Notebooks und .py-Module zu speichern), ein Image im nvidia-Docker zu verwenden. Die Lösung bestand darin, ein Terminal in jupyter zu öffnen, ohne etwas einzugeben, aber zu beenden, sobald die Dateien gespeichert wurden. Dies wurde in derselben Browser- / Jupyter-Instanz durchgeführt.

Maschinenbetriebssystem: Ubuntu 18.04

brz
quelle
0

Öffnen Sie die Entwicklereinstellung, klicken Sie auf Konsole und geben Sie Folgendes ein

JSON.parse (document.getElementById ('jupyter-config-data'). TextContent) .token

Versuchen Sie dann, das Notebook zu speichern. Das Notebook, das zuvor nicht gespeichert wurde, wird jetzt gespeichert.

Aakash Avinesh Kumar
quelle
0

Dies ist der einfachste Weg.

Ich musste kein neues Notizbuch öffnen. Stattdessen habe ich den Baum wieder geöffnet und den Kernel wieder verbunden. Irgendwann habe ich auch den Kernel neu gestartet. - user650654 9. Oktober 19 um 0:17

liangli
quelle
Ansonsten gibt es immer die Antwortoption "Community Wiki"
Vega
0

Ich konnte es lösen, indem ich auf das Dropdown-Menü "Kernel" klickte und "Interrupt" auswählte.

user14063657
quelle
-1

Die am häufigsten gewählte Antwort scheint bei Verwendung von Jupyter Lab nicht zu funktionieren. Dieser tut es jedoch. Kopieren Sie einfach die URL in einen neuen Tab, ersetzen Sie 'lab' durch 'tree' und drücken Sie die Eingabetaste, um die Seite zu laden. Es wird ein neues CSRF-Token für Ihre Sitzung generiert und Sie können loslegen!

Ich würde vorschlagen, Einstellungen> Dokumente automatisch speichern zu aktivieren, um zu vermeiden, dass Sie in Zukunft Arbeit verlieren. Es wird sehr regelmäßig gespeichert, daher sollte ohnehin alles auf dem neuesten Stand sein, bevor es zu Zeitüberschreitungen kommt.

Ich musste kein neues Notizbuch öffnen. Stattdessen habe ich den Baum wieder geöffnet und den Kernel wieder verbunden. Irgendwann habe ich auch den Kernel neu gestartet. - user650654 9. Oktober 19 um 0:17

EdemaRuh
quelle