이 저장소에는 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 설정을 사용하려는 경우 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_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
로컬에서 테스트를 실행하려면 사용자 이름 testuser
및 비밀번호 testpassword
사용하여 MYSQL에 다른 계정을 만들어야 합니다. 우리의 테스트는 기본적으로 이 계정에 대해 실행되도록 구성되어 있습니다.
그런 다음 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 서버와 유사합니다. 지침은 웹 사이트 참조). scraper task_queue에는 로컬로 다운로드할 수 있는 scraper_graph
도 필요합니다(관리자 중 한 명에게 문의하세요).
서버를 정지시키는 요청의 일부로 경로를 계산하는 대신, 플라스크는 스크래퍼 작업을 셀러리가 관리하는 다른 프로세스에 전달하고 Redis를 통해 통신합니다. 이러한 작업은 Python 데코레이터를 사용하여 정의되며 그 예는 여기에서 볼 수 있습니다.
불행하게도 Windows에서는 셀러리나 Redis가 모두 지원되지 않습니다. 따라서 Windows 개발 시스템이 있는 경우 WSL을 통해 서버를 실행해야 합니다. Windows MySQL 인스턴스를 유지하려면 호스트 Windows 시스템이 WSL에 노출되는 포트를 파악해야 합니다. 이 슈퍼유저 게시물을 참조하세요. 이는 WSL이 다시 시작될 때마다 변경됩니다.