Repositori ini menyimpan kode untuk wikispeedruns.com.
Kami menyarankan untuk membuat lingkungan virtual Python untuk menjalankan server.
python -m venv env
Untuk Windows Powershell:
./env/Scripts/Activate.ps1
Untuk berbasis Linux/Unix (Mac)
source env/bin/activate
Kemudian instal persyaratannya (dengan lingkungan virtual Anda diaktifkan)
pip install -r requirements.txt
Kemudian instal persyaratannya (dengan lingkungan virtual Anda diaktifkan)
npm install
Ada sejumlah skrip untuk membantu menyiapkan aplikasi web dalam skrip.
Setelah server MySQL berjalan, Anda perlu membuat akun. Secara default, kami mengasumsikan user
akun tanpa kata sandi (lihat default.json
). Jika Anda ingin menggunakan pengaturan MySQL yang berbeda, Anda dapat membuat prod.json
dengan kolom MySQL yang relevan di config
yang akan menggantikan default.json
.
Kemudian buat database dan tabelnya menggunakan script yang telah disediakan.
cd scripts
python create_db.py
Ada juga skrip interaktif (dengan instruksi di skrip) yang dapat digunakan untuk menyiapkan akun admin lokal. Melalui akun admin, perintah dapat dikelola melalui /manage
.
cd scripts
python create_admin_account.py
(Opsional) Terakhir, ada juga skrip untuk mengisi database dengan data untuk pembangunan lokal
cd scripts
python populate_db.py
Tetapkan variabel lingkungan FLASK_ENV
di command prompt apa pun yang ingin Anda gunakan untuk menjalankan server flask. Ini akan memungkinkan instance lokal memuat ulang secara otomatis ketika file diubah.
Misalnya di Linux/Mac
export FLASK_DEBUG=1
export FLASK_ENV="development"
Atau di Windows Powershell
$env:FLASK_ENV="development"
Dari direktori tingkat atas
npm run start
Di shell terpisah, dari direktori tingkat atas
flask --app app run --debug
Untuk menjalankan tes secara lokal, Anda perlu membuat akun lain di MYSQL dengan nama pengguna testuser
dan kata sandi testpassword
. Pengujian kami dikonfigurasikan untuk dijalankan pada akun ini secara default.
Kemudian, jalankan pytest dari direktori test
.
cd test
pytest
Perhatikan bahwa pengujian ini juga dijalankan di Docker setelah membuat PR menggunakan alur kerja Github. Di masa depan, kami mungkin menyiapkan buruh pelabuhan untuk menjalankan pengujian juga.
Prestasi ditambahkan ke database melalui skrip python. Jalankan skrip python ini dengan lingkungan virtual Anda diaktifkan untuk mengisi tabel pencapaian:
scriptsachievementadd_achievements_to_database.py
Setiap proses yang berjalan di masa depan akan diperiksa berdasarkan pencapaian dalam database. Kita juga dapat menerapkan aturan pemeriksaan ini pada proses sebelumnya.
Jalankan skrip python ini untuk secara retroaktif memeriksa riwayat berjalan terhadap semua pencapaian saat ini.
scriptsachievementhistorical_achievements.py
Antrean tugas asinkron untuk tugas scraper didukung oleh 2 alat tambahan, seledri dan redis. Seledri diinstal sebagai persyaratan python, tetapi redis (https://redis.io/) perlu diinstal dan dijalankan secara terpisah (mirip dengan server SQL, lihat situs web untuk petunjuknya). Task_queue scraper juga memerlukan scraper_graph
, yang dapat diunduh secara lokal (hubungi salah satu pengelola)
Daripada menghitung jalur sebagai bagian dari permintaan, yang membekukan server, flask meneruskan tugas scraper ke proses lain yang dikelola oleh seledri (dan berkomunikasi melalui redis). Tugas-tugas ini ditentukan menggunakan dekorator python, contohnya dapat dilihat di sini.
Sayangnya, seledri maupun redis tidak didukung di windows. Jadi jika Anda memiliki mesin pengembangan windows, Anda harus menjalankan server melalui WSL. Perhatikan bahwa jika Anda ingin mempertahankan instance MySQL windows Anda, Anda perlu mencari tahu port mana yang digunakan mesin host windows di WSL. Lihat postingan Pengguna Super ini. Perhatikan bahwa ini berubah setiap kali WSL dimulai ulang.