พื้นที่เก็บข้อมูลนี้เก็บโค้ดสำหรับ wikispeedruns.com
เราขอแนะนำให้สร้างสภาพแวดล้อมเสมือน Python สำหรับการรันเซิร์ฟเวอร์
python -m venv env
สำหรับ Windows Powershell:
./env/Scripts/Activate.ps1
สำหรับระบบปฏิบัติการ Linux / Unix (Mac)
source env/bin/activate
จากนั้นติดตั้งข้อกำหนด (โดยเปิดใช้งานสภาพแวดล้อมเสมือนของคุณ)
pip install -r requirements.txt
จากนั้นติดตั้งข้อกำหนด (โดยเปิดใช้งานสภาพแวดล้อมเสมือนของคุณ)
npm install
มีสคริปต์จำนวนหนึ่งเพื่อช่วยในการตั้งค่าเว็บแอปในสคริปต์
เมื่อเซิร์ฟเวอร์ MySQL ทำงาน คุณจะต้องสร้างบัญชี ตามค่าเริ่มต้น เราจะถือว่า user
บัญชีไม่มีรหัสผ่าน (ดู default.json
) หากคุณต้องการใช้การตั้งค่า MySQL อื่น คุณสามารถสร้าง prod.json
ด้วยฟิลด์ MySQL ที่เกี่ยวข้องใน config
ซึ่งจะแทนที่ default.json
จากนั้นสร้างฐานข้อมูลและตารางโดยใช้สคริปต์ที่ให้มา
cd scripts
python create_db.py
นอกจากนี้ยังมีสคริปต์แบบโต้ตอบ (พร้อมคำแนะนำในสคริปต์) ที่สามารถใช้เพื่อตั้งค่าบัญชีผู้ดูแลระบบท้องถิ่น ผ่านบัญชีผู้ดูแลระบบ คุณสามารถจัดการพรอมต์ผ่าน /manage
ได้
cd scripts
python create_admin_account.py
(ไม่บังคับ) สุดท้ายนี้ยังมีสคริปต์สำหรับเติมฐานข้อมูลพร้อมข้อมูลสำหรับการพัฒนาท้องถิ่น
cd scripts
python populate_db.py
ตั้งค่าตัวแปรสภาพแวดล้อม FLASK_ENV
ในพร้อมท์คำสั่งใดๆ ก็ตามที่คุณวางแผนจะใช้สำหรับการรันเซิร์ฟเวอร์ขวด ซึ่งจะทำให้อินสแตนซ์ในเครื่องโหลดซ้ำโดยอัตโนมัติเมื่อไฟล์มีการเปลี่ยนแปลง
ตัวอย่างเช่น ใน Linux/Mac
export FLASK_DEBUG=1
export FLASK_ENV="development"
หรือใน Windows Powershell
$env:FLASK_ENV="development"
จากไดเรกทอรีระดับบนสุด
npm run start
ในเชลล์ที่แยกจากไดเร็กทอรีระดับบนสุด
flask --app app run --debug
เพื่อที่จะดำเนินการทดสอบในเครื่อง คุณจะต้องสร้างบัญชีอื่นใน MYSQL ด้วยชื่อผู้ใช้ testuser
และรหัสผ่าน testpassword
การทดสอบของเราได้รับการกำหนดค่าให้ทำงานกับบัญชีนี้ตามค่าเริ่มต้น
จากนั้นเพียงเรียกใช้ pytest จากไดเร็กทอรี test
cd test
pytest
โปรดทราบว่าการทดสอบเหล่านี้จะรันใน Docker เมื่อทำการ PR โดยใช้เวิร์กโฟลว์ Github ในอนาคต เราอาจตั้งค่านักเทียบท่าเพื่อทำการทดสอบด้วยเช่นกัน
ความสำเร็จจะถูกเพิ่มฐานข้อมูลผ่านสคริปต์หลาม รันสคริปต์หลามนี้โดยเปิดใช้งานสภาพแวดล้อมเสมือนของคุณเพื่อเติมตารางความสำเร็จ:
scriptsachievementadd_achievements_to_database.py
การวิ่งในอนาคตจะถูกตรวจสอบเทียบกับความสำเร็จในฐานข้อมูล เรายังสามารถนำกฎการตรวจสอบเหล่านี้ไปใช้กับการทำงานครั้งก่อนๆ ได้อีกด้วย
รันสคริปต์ python นี้เพื่อตรวจสอบย้อนหลังกับความสำเร็จปัจจุบันทั้งหมด
scriptsachievementhistorical_achievements.py
คิวงานแบบอะซิงโครนัสสำหรับงานขูดได้รับการสนับสนุนโดยเครื่องมือพิเศษ 2 รายการ ได้แก่ คื่นฉ่ายและ Redis Celery ได้รับการติดตั้งตามข้อกำหนดของ Python แต่ต้องติดตั้งและรัน redis (https://redis.io/) แยกกัน (คล้ายกับเซิร์ฟเวอร์ SQL ดูคำแนะนำในเว็บไซต์) scraper task_queue ยังต้องการ scraper_graph
ซึ่งสามารถดาวน์โหลดได้ในเครื่อง (ติดต่อหนึ่งในผู้ดูแล)
แทนที่จะคำนวณเส้นทางโดยเป็นส่วนหนึ่งของคำขอ ซึ่งจะทำให้เซิร์ฟเวอร์ค้าง ฟลาสก์จะส่งงานขูดไปยังกระบวนการอื่นที่จัดการโดยคื่นฉ่าย (และสื่อสารผ่าน Redis) งานเหล่านี้ถูกกำหนดโดยใช้เครื่องมือตกแต่งหลาม สามารถดูตัวอย่างได้ที่นี่
น่าเสียดายที่ Windows ไม่รองรับทั้งคื่นฉ่ายและ Redis ดังนั้นหากคุณมีเครื่องพัฒนา windows คุณจะต้องรันเซิร์ฟเวอร์ผ่าน WSL โปรดทราบว่าหากคุณต้องการเก็บอินสแตนซ์ Windows MySQL ไว้ คุณต้องพิจารณาว่าพอร์ตใดที่เครื่อง Windows โฮสต์เปิดอยู่ใน WSL ดูโพสต์ผู้ใช้ขั้นสูงนี้ โปรดทราบว่าการเปลี่ยนแปลงนี้ทุกครั้งที่รีสตาร์ท WSL