該儲存庫包含 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
有許多腳本可協助在腳本中設定 Web 應用程式。
MySQL 伺服器執行後,您將需要建立一個帳戶。預設情況下,我們假設帳戶user
沒有密碼(請參閱default.json
)。如果您希望使用不同的 MySQL 設置,您可以使用config
中的相關 MySQL 字段建立prod.json
,這將覆蓋default.json
。
然後使用提供的腳本建立資料庫和表格。
cd scripts
python create_db.py
還有一個互動式腳本(腳本中包含說明)可用於設定本機管理員帳戶。透過管理員帳戶,可以透過/manage
管理提示。
cd scripts
python create_admin_account.py
(可選)最後還有一個腳本,用於向資料庫填充資料以供本地開發
cd scripts
python populate_db.py
在您計劃用於執行 Flask 伺服器的任何命令提示字元中設定環境變數FLASK_ENV
。這將允許本地實例在檔案更改時自動重新載入。
例如,在 Linux/Mac 中
export FLASK_DEBUG=1
export FLASK_ENV="development"
或在 Windows Powershell 中
$env:FLASK_ENV="development"
從頂級目錄
npm run start
在單獨的 shell 中,從頂級目錄
flask --app app run --debug
為了在本機上執行測試,您需要在 MYSQL 中建立另一個帳戶,使用者名稱為testuser
,密碼為testpassword
。預設情況下,我們的測試配置為針對此帳戶執行。
然後,只需從test
目錄執行 pytest 即可。
cd test
pytest
請注意,使用 Github 工作流程製作 PR 時,這些測試也會在 Docker 中執行。將來,我們也可能會設定 docker 來執行測試。
成績透過 python 腳本加入到資料庫中。在啟用虛擬環境的情況下執行此 python 腳本以填入成就表:
scriptsachievementadd_achievements_to_database.py
任何未來的運行都將根據資料庫中的成就進行檢查。我們也可以將這些檢查規則應用於先前的運行。
執行此 python 腳本可根據所有當前成就追溯檢查歷史運行。
scriptsachievementhistorical_achievements.py
爬蟲任務的非同步任務隊列由 2 個額外的工具支持,celery 和 redis。 Celery 是作為 python 要求安裝的,但 redis (https://redis.io/) 需要單獨安裝和運行(類似於 SQL Server,請參閱網站以取得說明)。 scraper task_queue 也需要scraper_graph
,可以在本地下載(聯絡維護人員之一)
Flask 不會將路徑計算為請求的一部分,這會凍結伺服器,而是將抓取任務傳遞給由 celery 管理的另一個進程(並透過 Redis 進行通訊)。這些任務是使用 python 裝飾器定義的,可以在此處查看範例。
不幸的是,windows 上都不支援 celery 和 redis。因此,如果您有一台 Windows 開發機器,則必須透過 WSL 執行伺服器。請注意,如果您想保留 Windows MySQL 實例,則需要弄清楚 Windows 主機在 WSL 中公開了哪個連接埠。請參閱此超級用戶貼文。請注意,每次重新啟動 WSL 時都會發生變化。