В этом репозитории хранится код 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
в любой командной строке, которую вы планируете использовать для запуска сервера flask. Это позволит локальному экземпляру автоматически перезагружаться при изменении файлов.
Например, в 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. В будущем мы, возможно, также настроим Docker для запуска тестов.
Достижения добавляются в базу данных через скрипты Python. Запустите эти сценарии Python с включенной виртуальной средой для заполнения таблиц достижений:
scriptsachievementadd_achievements_to_database.py
Любые будущие пробежки будут сверяться с достижениями в базе данных. Мы также можем применить эти правила проверки к предыдущим запускам.
Запустите этот скрипт Python, чтобы ретроспективно сверить исторические прогоны со всеми текущими достижениями.
scriptsachievementhistorical_achievements.py
Асинхронная очередь задач для парсинговых задач поддерживается двумя дополнительными инструментами: celery и redis. Celery устанавливается как требование Python, но Redis (https://redis.io/) необходимо установить и запустить отдельно (аналогично SQL-серверу, инструкции см. на веб-сайте). Парсер Task_queue также требует scraper_graph
, который можно загрузить локально (обратитесь к одному из сопровождающих).
Вместо того, чтобы вычислять путь как часть запроса, который зависает на сервере, flask передает задачи очистки другому процессу, управляемому celery (и взаимодействует через redis). Эти задачи определяются с помощью декораторов Python, примеры которых можно увидеть здесь.
К сожалению, ни сельдерей, ни Redis не поддерживаются в Windows. Итак, если у вас есть машина для разработки Windows, вам придется запустить сервер через WSL. Обратите внимание: если вы хотите сохранить экземпляр Windows MySQL, вам необходимо выяснить, какой порт хост-компьютера Windows открыт в WSL. См. этот пост суперпользователя. Обратите внимание, что это меняется каждый раз при перезапуске WSL.