當前位置: 首頁>>代碼示例>>Python>>正文


Python util.get_remote_address方法代碼示例

本文整理匯總了Python中flask_limiter.util.get_remote_address方法的典型用法代碼示例。如果您正苦於以下問題:Python util.get_remote_address方法的具體用法?Python util.get_remote_address怎麽用?Python util.get_remote_address使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在flask_limiter.util的用法示例。


在下文中一共展示了util.get_remote_address方法的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。

示例1: test_invalid_decorated_static_limits

# 需要導入模塊: from flask_limiter import util [as 別名]
# 或者: from flask_limiter.util import get_remote_address [as 別名]
def test_invalid_decorated_static_limits(caplog):
    app = Flask(__name__)
    limiter = Limiter(
        app, default_limits=["1/second"], key_func=get_remote_address
    )

    @app.route("/t1")
    @limiter.limit("2/sec")
    def t1():
        return "42"

    with app.test_client() as cli:
        with hiro.Timeline().freeze():
            assert cli.get("/t1").status_code == 200
            assert cli.get("/t1").status_code == 429
    assert (
        "failed to configure"
        in caplog.records[0].msg
    )
    assert (
        "exceeded at endpoint"
        in caplog.records[1].msg
    ) 
開發者ID:alisaifee,項目名稱:flask-limiter,代碼行數:25,代碼來源:test_decorators.py

示例2: test_reuse_logging

# 需要導入模塊: from flask_limiter import util [as 別名]
# 或者: from flask_limiter.util import get_remote_address [as 別名]
def test_reuse_logging():
    app = Flask(__name__)
    app_handler = mock.Mock()
    app_handler.level = logging.INFO
    app.logger.addHandler(app_handler)
    limiter = Limiter(app, key_func=get_remote_address)
    for handler in app.logger.handlers:
        limiter.logger.addHandler(handler)

    @app.route("/t1")
    @limiter.limit("1/minute")
    def t1():
        return "42"

    with app.test_client() as cli:
        cli.get("/t1")
        cli.get("/t1")

    assert app_handler.handle.call_count == 1 
開發者ID:alisaifee,項目名稱:flask-limiter,代碼行數:21,代碼來源:test_flask_ext.py

示例3: test_headers_breach

# 需要導入模塊: from flask_limiter import util [as 別名]
# 或者: from flask_limiter.util import get_remote_address [as 別名]
def test_headers_breach():
    app = Flask(__name__)
    limiter = Limiter(
        app,
        default_limits=["10/minute"],
        headers_enabled=True,
        key_func=get_remote_address
    )

    @app.route("/t1")
    @limiter.limit("2/second; 10 per minute; 20/hour")
    def t():
        return "test"

    with hiro.Timeline().freeze() as timeline:
        with app.test_client() as cli:
            for i in range(11):
                resp = cli.get("/t1")
                timeline.forward(1)

            assert resp.headers.get('X-RateLimit-Limit') == '10'
            assert resp.headers.get('X-RateLimit-Remaining') == '0'
            assert resp.headers.get('X-RateLimit-Reset') == \
                str(int(time.time() + 50))
            assert resp.headers.get('Retry-After') == str(int(50)) 
開發者ID:alisaifee,項目名稱:flask-limiter,代碼行數:27,代碼來源:test_flask_ext.py

示例4: test_retry_after_exists_seconds

# 需要導入模塊: from flask_limiter import util [as 別名]
# 或者: from flask_limiter.util import get_remote_address [as 別名]
def test_retry_after_exists_seconds():
    app = Flask(__name__)
    _ = Limiter(
        app,
        default_limits=["1/minute"],
        headers_enabled=True,
        key_func=get_remote_address
    )

    @app.route("/t1")
    def t():
        return "", 200, {'Retry-After': '1000000'}

    with app.test_client() as cli:
        resp = cli.get("/t1")

        retry_after = int(resp.headers.get('Retry-After'))
        assert retry_after > 1000 
開發者ID:alisaifee,項目名稱:flask-limiter,代碼行數:20,代碼來源:test_flask_ext.py

示例5: test_retry_after_exists_rfc1123

# 需要導入模塊: from flask_limiter import util [as 別名]
# 或者: from flask_limiter.util import get_remote_address [as 別名]
def test_retry_after_exists_rfc1123():
    app = Flask(__name__)
    _ = Limiter(
        app,
        default_limits=["1/minute"],
        headers_enabled=True,
        key_func=get_remote_address
    )

    @app.route("/t1")
    def t():
        return "", 200, {'Retry-After': 'Sun, 06 Nov 2032 01:01:01 GMT'}

    with app.test_client() as cli:
        resp = cli.get("/t1")

        retry_after = int(resp.headers.get('Retry-After'))
        assert retry_after > 1000 
開發者ID:alisaifee,項目名稱:flask-limiter,代碼行數:20,代碼來源:test_flask_ext.py

示例6: test_custom_headers_from_setter_and_config

# 需要導入模塊: from flask_limiter import util [as 別名]
# 或者: from flask_limiter.util import get_remote_address [as 別名]
def test_custom_headers_from_setter_and_config():
    app = Flask(__name__)
    app.config.setdefault(C.HEADER_LIMIT, "Limit")
    app.config.setdefault(C.HEADER_REMAINING, "Remaining")
    app.config.setdefault(C.HEADER_RESET, "Reset")
    limiter = Limiter(
        default_limits=["10/minute"],
        headers_enabled=True,
        key_func=get_remote_address
    )
    limiter._header_mapping[HEADERS.REMAINING] = 'Available'
    limiter.init_app(app)

    @app.route("/t1")
    def t():
        return "test"

    with app.test_client() as cli:
        for i in range(11):
            resp = cli.get("/t1")

        assert resp.headers.get('Limit') == '10'
        assert resp.headers.get('Available') == '0'
        assert resp.headers.get('Reset') is not None 
開發者ID:alisaifee,項目名稱:flask-limiter,代碼行數:26,代碼來源:test_flask_ext.py

示例7: init

# 需要導入模塊: from flask_limiter import util [as 別名]
# 或者: from flask_limiter.util import get_remote_address [as 別名]
def init(app):

    limiter = Limiter(
        app,
        key_func=get_remote_address,
        default_limits=[]
    )
    return limiter 
開發者ID:bitshares,項目名稱:bitshares-explorer-api,代碼行數:10,代碼來源:limiter.py

示例8: _get_key_func

# 需要導入模塊: from flask_limiter import util [as 別名]
# 或者: from flask_limiter.util import get_remote_address [as 別名]
def _get_key_func(limit_by=None):
    """Get limit key factory function."""

    def generate_limit_key():
        """Generate key for request rate limiting."""
        # use authenticated user if specified, otherwise use ip by default
        if limit_by == 'user' and flask.g.get('user') is not None:
            return flask.g.get('user')
        return util.get_remote_address()

    return generate_limit_key 
開發者ID:Morgan-Stanley,項目名稱:treadmill,代碼行數:13,代碼來源:limit.py

示例9: get

# 需要導入模塊: from flask_limiter import util [as 別名]
# 或者: from flask_limiter.util import get_remote_address [as 別名]
def get(self):

        # feeds get large need to force some cleanup
        gc.collect()

        if get_remote_address() != request.access_route[-1]:
            return jsonify_unauth()

        if not HTTPD_TOKEN:
            return jsonify_success()

        remote = ROUTER_ADDR
        if current_app.config.get('CIF_ROUTER_ADDR'):
            remote = current_app.config['CIF_ROUTER_ADDR']

        try:
            r = Client(remote, HTTPD_TOKEN).ping()
            r = Client(remote, HTTPD_TOKEN).indicators_search({'indicator': 'example.com', 'nolog': '1'})
            r = True

        except TimeoutError:
            return jsonify_unknown(msg='timeout', code=408)

        except AuthError:
            return jsonify_unauth()

        if not r:
            return jsonify_unknown(503)

        return jsonify_success() 
開發者ID:csirtgadgets,項目名稱:bearded-avenger,代碼行數:32,代碼來源:health.py

示例10: proxy_get_remote_address

# 需要導入模塊: from flask_limiter import util [as 別名]
# 或者: from flask_limiter.util import get_remote_address [as 別名]
def proxy_get_remote_address():
    if HTTPD_PROXY in ['1', 1]:
        return request.access_route[-1]

    return get_remote_address() 
開發者ID:csirtgadgets,項目名稱:bearded-avenger,代碼行數:7,代碼來源:__init__.py

示例11: test_invalid_decorated_dynamic_limits

# 需要導入模塊: from flask_limiter import util [as 別名]
# 或者: from flask_limiter.util import get_remote_address [as 別名]
def test_invalid_decorated_dynamic_limits(caplog):
    app = Flask(__name__)
    app.config.setdefault("X", "2 per sec")
    limiter = Limiter(
        app, default_limits=["1/second"], key_func=get_remote_address
    )

    @app.route("/t1")
    @limiter.limit(lambda: current_app.config.get("X"))
    def t1():
        return "42"

    with app.test_client() as cli:
        with hiro.Timeline().freeze():
            assert cli.get("/t1").status_code == 200
            assert cli.get("/t1").status_code == 429
    # 2 for invalid limit, 1 for warning.
    assert len(caplog.records) == 3
    assert (
        "failed to load ratelimit"
        in caplog.records[0].msg
    )
    assert (
        "failed to load ratelimit"
        in caplog.records[1].msg
    )
    assert (
        "exceeded at endpoint"
        in caplog.records[2].msg
    )
    assert caplog.records[2].levelname == 'WARNING' 
開發者ID:alisaifee,項目名稱:flask-limiter,代碼行數:33,代碼來源:test_decorators.py

示例12: test_conditional_limits

# 需要導入模塊: from flask_limiter import util [as 別名]
# 或者: from flask_limiter.util import get_remote_address [as 別名]
def test_conditional_limits():
    """Test that the conditional activation of the limits work."""
    app = Flask(__name__)
    limiter = Limiter(app, key_func=get_remote_address)

    @app.route("/limited")
    @limiter.limit("1 per day")
    def limited_route():
        return "passed"

    @app.route("/unlimited")
    @limiter.limit("1 per day", exempt_when=lambda: True)
    def never_limited_route():
        return "should always pass"

    is_exempt = False

    @app.route("/conditional")
    @limiter.limit("1 per day", exempt_when=lambda: is_exempt)
    def conditionally_limited_route():
        return "conditional"

    with app.test_client() as cli:
        assert cli.get("/limited").status_code == 200
        assert cli.get("/limited").status_code == 429

        assert cli.get("/unlimited").status_code == 200
        assert cli.get("/unlimited").status_code == 200

        assert cli.get("/conditional").status_code == 200
        assert cli.get("/conditional").status_code == 429
        is_exempt = True
        assert cli.get("/conditional").status_code == 200
        is_exempt = False
        assert cli.get("/conditional").status_code == 429 
開發者ID:alisaifee,項目名稱:flask-limiter,代碼行數:37,代碼來源:test_decorators.py

示例13: test_conditional_shared_limits

# 需要導入模塊: from flask_limiter import util [as 別名]
# 或者: from flask_limiter.util import get_remote_address [as 別名]
def test_conditional_shared_limits():
    """Test that conditional shared limits work."""
    app = Flask(__name__)
    limiter = Limiter(app, key_func=get_remote_address)

    @app.route("/limited")
    @limiter.shared_limit("1 per day", "test_scope")
    def limited_route():
        return "passed"

    @app.route("/unlimited")
    @limiter.shared_limit(
        "1 per day", "test_scope", exempt_when=lambda: True
    )
    def never_limited_route():
        return "should always pass"

    is_exempt = False

    @app.route("/conditional")
    @limiter.shared_limit(
        "1 per day", "test_scope", exempt_when=lambda: is_exempt
    )
    def conditionally_limited_route():
        return "conditional"

    with app.test_client() as cli:
        assert cli.get("/unlimited").status_code == 200
        assert cli.get("/unlimited").status_code == 200

        assert cli.get("/limited").status_code == 200
        assert cli.get("/limited").status_code == 429

        assert cli.get("/conditional").status_code == 429
        is_exempt = True
        assert cli.get("/conditional").status_code == 200
        is_exempt = False
        assert cli.get("/conditional").status_code == 429 
開發者ID:alisaifee,項目名稱:flask-limiter,代碼行數:40,代碼來源:test_decorators.py

示例14: test_whitelisting

# 需要導入模塊: from flask_limiter import util [as 別名]
# 或者: from flask_limiter.util import get_remote_address [as 別名]
def test_whitelisting():

    app = Flask(__name__)
    limiter = Limiter(
        app,
        default_limits=["1/minute"],
        headers_enabled=True,
        key_func=get_remote_address
    )

    @app.route("/")
    def t():
        return "test"

    @limiter.request_filter
    def w():
        if request.headers.get("internal", None) == "true":
            return True
        return False

    with hiro.Timeline().freeze() as timeline:
        with app.test_client() as cli:
            assert cli.get("/").status_code == 200
            assert cli.get("/").status_code == 429
            timeline.forward(60)
            assert cli.get("/").status_code == 200

            for i in range(0, 10):
                assert cli.get(
                    "/", headers={"internal": "true"}
                ).status_code == 200 
開發者ID:alisaifee,項目名稱:flask-limiter,代碼行數:33,代碼來源:test_decorators.py

示例15: test_logging

# 需要導入模塊: from flask_limiter import util [as 別名]
# 或者: from flask_limiter.util import get_remote_address [as 別名]
def test_logging(caplog):
    app = Flask(__name__)
    limiter = Limiter(app, key_func=get_remote_address)

    @app.route("/t1")
    @limiter.limit("1/minute")
    def t1():
        return "test"

    with app.test_client() as cli:
        assert 200 == cli.get("/t1").status_code
        assert 429 == cli.get("/t1").status_code
    assert len(caplog.records) == 1
    assert caplog.records[0].levelname == 'WARNING' 
開發者ID:alisaifee,項目名稱:flask-limiter,代碼行數:16,代碼來源:test_flask_ext.py


注:本文中的flask_limiter.util.get_remote_address方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。