hanabiapp

 1import os
 2from flask import Flask
 3from flask_sqlalchemy import SQLAlchemy
 4from flask_login import LoginManager
 5from flask_socketio import SocketIO
 6from flask_cors import CORS
 7from redislite import Redis
 8
 9db = SQLAlchemy()
10login = LoginManager()
11login.login_view = 'auth.login'
12socketio = SocketIO()
13redis_client = None
14
15def create_app(config_class='config.Config'):
16    """
17    Flask アプリケーションを作成し,初期設定を行う関数.
18
19    - データベース,ログイン管理,SocketIO,CORS の設定を適用する.
20    - Redis クライアントを初期化する.
21    - 必要なデータベーステーブルを作成する.
22    - 各種ビューをアプリケーションに登録する.
23    - ゲームのタイマー処理をバックグラウンドで開始する.
24
25    Args:
26        config_class (str, optional): アプリケーション設定を読み込むクラス名(デフォルトは 'config.Config')
27
28    Returns:
29        Flask: 初期化された Flask アプリケーションインスタンス
30    """
31    # Flask アプリケーション初期化
32    app = Flask(__name__)
33    app.config.from_object(config_class)
34
35    db.init_app(app)
36    login.init_app(app)
37    sio_async_mode = app.config.get('SOCKET_IO_ASYNC_MODE', 'gevent')
38    socketio.init_app(app, async_mode=sio_async_mode,  cors_allowed_origins='*')
39    CORS(app)
40    redis_url = app.config.get('REDIS_URL', None)
41
42    global redis_client
43    if redis_url:
44        redis_client = Redis.from_url(redis_url)
45    else:
46        redis_client = Redis()
47
48    with app.app_context():
49        from .models import user, pre_survey, game_info, play_log
50        db.create_all()
51
52        from .views import index, home, auth, consent, survey, game
53        app.register_blueprint(index.bp)
54        app.register_blueprint(home.bp)
55        app.register_blueprint(auth.bp)
56        app.register_blueprint(consent.bp)
57        app.register_blueprint(survey.bp)
58        app.register_blueprint(game.bp)
59
60        socketio.start_background_task(game.process_timer, app)
61
62        app.jinja_env.filters['format_play_time'] = home.format_play_time
63
64    return app
db = <SQLAlchemy>
login = <flask_login.login_manager.LoginManager object>
socketio = <flask_socketio.SocketIO object>
redis_client = None
def create_app(config_class='config.Config'):
16def create_app(config_class='config.Config'):
17    """
18    Flask アプリケーションを作成し,初期設定を行う関数.
19
20    - データベース,ログイン管理,SocketIO,CORS の設定を適用する.
21    - Redis クライアントを初期化する.
22    - 必要なデータベーステーブルを作成する.
23    - 各種ビューをアプリケーションに登録する.
24    - ゲームのタイマー処理をバックグラウンドで開始する.
25
26    Args:
27        config_class (str, optional): アプリケーション設定を読み込むクラス名(デフォルトは 'config.Config')
28
29    Returns:
30        Flask: 初期化された Flask アプリケーションインスタンス
31    """
32    # Flask アプリケーション初期化
33    app = Flask(__name__)
34    app.config.from_object(config_class)
35
36    db.init_app(app)
37    login.init_app(app)
38    sio_async_mode = app.config.get('SOCKET_IO_ASYNC_MODE', 'gevent')
39    socketio.init_app(app, async_mode=sio_async_mode,  cors_allowed_origins='*')
40    CORS(app)
41    redis_url = app.config.get('REDIS_URL', None)
42
43    global redis_client
44    if redis_url:
45        redis_client = Redis.from_url(redis_url)
46    else:
47        redis_client = Redis()
48
49    with app.app_context():
50        from .models import user, pre_survey, game_info, play_log
51        db.create_all()
52
53        from .views import index, home, auth, consent, survey, game
54        app.register_blueprint(index.bp)
55        app.register_blueprint(home.bp)
56        app.register_blueprint(auth.bp)
57        app.register_blueprint(consent.bp)
58        app.register_blueprint(survey.bp)
59        app.register_blueprint(game.bp)
60
61        socketio.start_background_task(game.process_timer, app)
62
63        app.jinja_env.filters['format_play_time'] = home.format_play_time
64
65    return app

Flask アプリケーションを作成し,初期設定を行う関数.

  • データベース,ログイン管理,SocketIO,CORS の設定を適用する.
  • Redis クライアントを初期化する.
  • 必要なデータベーステーブルを作成する.
  • 各種ビューをアプリケーションに登録する.
  • ゲームのタイマー処理をバックグラウンドで開始する.
Arguments:
  • config_class (str, optional): アプリケーション設定を読み込むクラス名(デフォルトは 'config.Config')
Returns:

Flask: 初期化された Flask アプリケーションインスタンス