Jupyter Notebook ไม่บันทึก: อาร์กิวเมนต์ '_xsrf' หายไปจากโพสต์


164

ฉันใช้งานสคริปต์บนสมุดบันทึก jupyter เป็นเวลาประมาณ 26 ชั่วโมง ฉันไม่ได้ใช้คอมพิวเตอร์เพื่อทำอย่างอื่น แต่ต้องใช้โปรแกรมนี้ซึ่งจะใช้เวลาประมาณ 30 ชั่วโมงจึงจะเสร็จสมบูรณ์ เมื่อเวลาประมาณ 21 ชั่วโมงมันหยุดการบันทึกและเครื่องของฉันมีสิ่งนี้:

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

โดยที่ [file.ipynb] คือตำแหน่งของสมุดบันทึก jupyter ของฉัน นอกจากนี้ยังกล่าวว่า:

'_xsrf' argument missing from post

ที่ด้านขวาบนของสมุดบันทึกอีกครั้ง โปรแกรมยังทำงานอยู่และไม่ต้องการรีสตาร์ท jupyter notebook และต้องรันโปรแกรมอีกครั้งเนื่องจากมีกำหนดเวลามีอะไรให้ทำได้อีกไหม

ฉันใช้ Google Chrome แต่ฉันไม่มีนามสกุล LastPass หรืออักขระ '%' ในโค้ดของฉันตามที่โพสต์อื่นแนะนำ

ขอบคุณสำหรับความช่วยเหลือ!


16
มีการสนทนาออนไลน์ในหัวข้อนี้หากคุณทำการค้นหา คำแนะนำอย่างหนึ่งที่ฉันเคยเห็นคือเปิดสมุดบันทึกเครื่องเดียวกันในหน้าต่างเบราว์เซอร์ใหม่ซึ่งจะช่วยแก้ปัญหาได้ จากนั้นคุณสามารถปิดหน้าต่างใหม่นั้นและทำงานต่อในหน้าต่างก่อนหน้า
AlexK

ขอบคุณ @AlexK ที่แก้ปัญหาเดียวกันกับ MBP ของฉัน
RandomWalker

คำตอบ:


314

วิธีที่ง่ายที่สุดที่ฉันพบคือ:

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

เพียงแค่เปิดสมุดบันทึกอื่น (ไม่ได้ทำงานอยู่แล้ว) บนเคอร์เนลเดียวกันปัญหาก็หายไปอย่างน่าอัศจรรย์ คุณสามารถบันทึกสมุดบันทึกที่แสดง_xsrfข้อผิดพลาดก่อนหน้านี้ได้อีกครั้ง

หากคุณปิดโฮมเพจของ Jupyter ไปแล้วคุณจะพบลิงค์ไปยังหน้าแรกของ Jupyter ได้


23
วันนี้ช่วยฉันไว้ ค่างาน 4 วันจะเสียไปถ้าฉันไม่เจอวิธีแก้ปัญหานี้ ขอขอบคุณ!
Hari Dattada

14
ฉันไม่จำเป็นต้องเปิดสมุดบันทึกใหม่ แต่ฉันเปิดต้นไม้อีกครั้งและเชื่อมต่อเคอร์เนลใหม่ ในบางครั้งฉันก็รีสตาร์ทเคอร์เนล
user650654

1
ฉันไม่ได้รับอนุญาตให้เปิดสมุดบันทึกใหม่จนกว่าฉันจะรีเฟรชรายการสมุดบันทึก หลังจากนั้นฉันเปิดสมุดบันทึกใหม่และข้อผิดพลาดก็หายไป
.. 😄

2
โปรดสังเกตว่าวิธีแก้ปัญหาต้องการให้สมุดบันทึกถูกสร้างขึ้นก่อนหน้านี้ดังนั้นให้เปิดสมุดบันทึกอื่นที่ไม่มีการใช้งานที่มีอยู่อย่าสร้างขึ้นมาใหม่หรือเปิดเครื่องที่กำลังทำงานอยู่ซึ่งทั้งสองอย่างจะทำให้เกิดข้อผิดพลาดเดียวกัน
mirekphd

5
นี่คือเหตุผลที่ฉันชอบ stackoverflow
Albert Chen

81

วิธีแก้ปัญหาที่ฉันเจอดูเหมือนง่ายเกินไป แต่ก็ใช้ได้ผล ไปที่ / tree aka Jupyter home page และรีเฟรชเบราว์เซอร์ ทำงานแล้ว.


3
สิ่งนี้ใช้ได้ผลสำหรับฉันในขณะที่วิธีแก้ปัญหาในการเปิดโน้ตบุ๊กเครื่องอื่นล้มเหลวในกรณีของฉัน
DISC-O

ขอบคุณพระเจ้าที่ฉันเห็นว่าโพสต์ใดที่ฉันได้รับการโหวตดังนั้นฉันจึงรู้ว่าควรใช้วิธีแก้ปัญหาใดเมื่อฉันลืมและกลับมาในอีกหนึ่งปี
eric

7

ฉันใช้สมุดบันทึก jupyter ทุกวันและไม่เคยประสบปัญหานี้มาก่อน ... จนถึงวันนี้ ฉันเปิดโน้ตบุ๊กทั้งวัน แต่มันไม่ได้ทำงานอะไรเลยจากนั้นก็ไม่มีเหตุผลที่ชัดเจนหยุดการบันทึกอัตโนมัติด้วย'_xsrf' argument missing from POSTข้อความแสดงข้อผิดพลาดที่ด้านบนขวา FYI - นี่คือสมุดบันทึก python3

ฉันไม่รู้สาเหตุของปัญหานี้ แต่ฉันเพิ่งอัปเกรดเวอร์ชัน python3 เป็น 3.7.2 และอัปเกรดแพ็คเกจไซต์ทั้งหมดของฉันเป็นเวอร์ชันล่าสุดเมื่อไม่กี่วันที่ผ่านมาซึ่งอาจเป็นสาเหตุได้

สำหรับวิธีแก้ปัญหาตามที่แนะนำในความคิดเห็นของ @AlexK ฉันเปิดโน้ตบุ๊กเครื่องเดียวกันในหน้าต่างใหม่ (ในความเป็นจริงเบราว์เซอร์ที่แตกต่างกัน) โดยใช้

jupyter notebook list

ในเทอร์มินัลเพื่อรับ URL พร้อมโทเค็นการเข้าสู่ระบบ

สิ่งนี้ส่งผลให้ฉันเปิดโน้ตบุ๊กและสามารถใช้งานได้อีกครั้ง แต่ข้อมูลที่ฉันป้อนตั้งแต่การบันทึกอัตโนมัติที่ประสบความสำเร็จครั้งล่าสุดหายไป โชคดีที่อินสแตนซ์ที่เสียของฉันยังคงเปิดอยู่และทำงานได้นอกเหนือจากการบันทึกดังนั้นฉันจึงสามารถคัดลอกและวางข้อมูลจากนั้นกดบันทึก ดังนั้นให้เปิดอินสแตนซ์ที่เสียอยู่เสมอหากคุณลองสิ่งนี้!


3

เมื่อฉันคลิกปุ่ม 'บันทึก' มันมีข้อผิดพลาดนี้ จากคำตอบในโพสต์นี้และเว็บไซต์อื่น ๆ ฉันเพิ่งค้นพบวิธีแก้ปัญหา สมุดบันทึก jupyter ของฉันติดตั้งจาก pip ดังนั้นฉันจึงเข้าถึงได้โดยพิมพ์ 'jupyter notebook' ในบรรทัดคำสั่งของ windows

(1) เปิดหน้าต่างคำสั่งใหม่จากนั้นเปิดสมุดบันทึก jupyter ใหม่ ลองบันทึกอีกครั้งในสมุดบันทึกเครื่องเก่าคราวนี้ข้อผิดพลาดคือ 'ล้มเหลว: ห้าม'

(2) จากนั้นในสมุดบันทึกเครื่องเก่าให้คลิก 'ดาวน์โหลดเป็น' หน้าต่างใหม่จะปรากฏขึ้นเพื่อขอโทเค็น

ใส่คำอธิบายภาพที่นี่

(3) เปิดหน้าต่างคำสั่งอื่นจากนั้นเปิดสมุดบันทึก jupyter อื่นพิมพ์ 'jupyter notebook list' คัดลอกโค้ดหลัง 'token =' และ before :: ไปยังช่องที่คุณเพิ่งเห็น คุณสามารถประหยัดเวลานี้ หากล้มเหลวคุณสามารถลองใช้โทเค็นอื่นในรายการ


สิ่งนี้ทำเพื่อฉันขอบคุณ! แค่อยากจะชี้แจงขั้นตอนสุดท้าย - ฉันใช้เวลาสักครู่ในการถอดรหัสความหมายของคุณ คำสั่งjupyter notebook listจะคายออก URL ที่ยาวส่วนที่เป็นสายยาวของตัวละครที่ปรากฏในระหว่างและtoken= ::คัดลอกและวางสตริงอักขระนี้ลงในช่อง "รหัสผ่านหรือโทเค็น" จากขั้นตอนที่ (2) และข้อผิดพลาด "ต้องห้าม" ในสมุดบันทึก jupyter ดั้งเดิมจะหายไป
Jorge Aurelio Menendez

3

ทางออกเดียวที่ใช้ได้ผลสำหรับฉันคือ:

  1. ฉันเปิดแท็บใหม่ใน Chrome
  2. ฉันวาง: http: // localhost: 8888 /? token = ......
  3. จากนั้นฉันก็ไปที่สมุดบันทึกเครื่องเดิมของฉันและฉันก็สามารถบันทึกได้

2

1 วิธีแก้ปัญหาในการแก้ปัญหานี้คือ:

  1. ดาวน์โหลดสมุดบันทึกที่คุณไม่สามารถบันทึกได้โดยไปที่: File -> Download as -> Notebook (ipynb)

  2. เปิดสมุดบันทึกที่ดาวน์โหลดมาโดยคลิกที่ไฟล์ที่ดาวน์โหลดบน jupyter browser UI

ตอนนี้คุณควรจะสามารถบันทึก (หรือเปลี่ยนชื่อ) สมุดบันทึกนี้จาก jupyter UI


การเปิดสมุดบันทึกอีกเครื่องไม่ได้ช่วยแก้ปัญหาให้ฉัน แต่สิ่งนี้ทำได้ (เช่นดาวน์โหลด nb)
Alex

2

ในกรณีของฉันปัญหานี้ได้รับการแก้ไขโดยคลิกที่ 'Kernel' (แสดงที่ด้านบนของโน้ตบุ๊ก) แล้วคลิก 'เชื่อมต่อใหม่'

หมายเหตุที่เพิ่มเข้ามา: ใน Jupyter บางเวอร์ชันจะไม่มี 'เชื่อมต่อใหม่'


1

ฉันประสบปัญหาเดียวกัน (ไม่สามารถบันทึกทั้งโน้ตบุ๊กและโมดูล. py) โดยใช้รูปภาพใน nvidia docker วิธีแก้ปัญหาก็แค่เปิดเทอร์มินัลภายใน jupyter โดยไม่ต้องพิมพ์อะไรเลยนอกจากออกจากไฟล์เมื่อบันทึก มันทำในอินสแตนซ์เบราว์เซอร์ / jupyter เดียวกัน

ระบบปฏิบัติการของเครื่อง: Ubuntu 18.04


0

เปิดการตั้งค่านักพัฒนาแล้วคลิกคอนโซลแล้วพิมพ์ต่อไปนี้

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

จากนั้นลองบันทึก Notebook สมุดบันทึกที่ไม่ได้บันทึกไว้ก่อนหน้านี้จะบันทึกทันที


0

นี่เป็นวิธีที่ง่ายที่สุด

ฉันไม่จำเป็นต้องเปิดสมุดบันทึกใหม่ แต่ฉันเปิดต้นไม้ใหม่และเชื่อมต่อเคอร์เนลอีกครั้ง ในบางครั้งฉันก็รีสตาร์ทเคอร์เนล - user650654 9 ต.ค. 62 เวลา 0:17 น


มิฉะนั้นจะมีตัวเลือกคำตอบ "Community wiki" เสมอ
Double Expresso


0

คำตอบที่ได้รับการโหวตมากที่สุดดูเหมือนจะไม่ได้ผลเมื่อใช้ Jupyter Lab อันนี้อย่างไรก็ตาม เพียงคัดลอก url ลงในแท็บใหม่แทนที่ "lab" ด้วย "tree" แล้วกด Enter เพื่อโหลดหน้า มันจะสร้างโทเค็น csrf ใหม่สำหรับเซสชันของคุณและคุณก็พร้อมแล้ว!

ฉันขอแนะนำให้เปิดใช้งานการตั้งค่า> บันทึกเอกสารอัตโนมัติตามค่าเริ่มต้นเพื่อหลีกเลี่ยงความกังวลเกี่ยวกับการสูญเสียงานในอนาคต บันทึกอย่างสม่ำเสมอดังนั้นทุกอย่างควรเป็นข้อมูลล่าสุดก่อนที่จะหมดเวลา

ฉันไม่จำเป็นต้องเปิดสมุดบันทึกใหม่ แต่ฉันเปิดต้นไม้ใหม่และเชื่อมต่อเคอร์เนลอีกครั้ง ในบางครั้งฉันก็รีสตาร์ทเคอร์เนล - user650654 9 ต.ค. 62 เวลา 0:17 น


0

ในกรณีของฉันฉันมีแท็บปิดของโฮมเพจ หลังจากเปิด Jupyter ใหม่ข้อผิดพลาดหายไปโดยอัตโนมัติและเราสามารถบันทึกไฟล์ได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.