该存储库包含 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 时都会发生变化。