Use django-ratelimit for graphql
Project description
Eaiser to use django-ratelimit for graphql in django.
Install
pip install django-graphql-ratelimit
Usage
ratelimit key support gql:xxx
, where xxx
is argument.
from django_graphql_ratelimit import ratelimit
class RequestSMSCode(graphene.Mutation):
class Arguments:
phone = graphene.String(required=True)
ok = graphene.Boolean()
@ratelimit(key="ip", rate="10/m", block=True)
@ratelimit(key="gql:phone", rate="5/m", block=True)
def mutate(self, info, phone):
request = info.context
# send sms code logic
return Test(ok=True)
You can use django-ratelimit keys except get:xxx
and post:xxx
:
ip
- Use the request IP address (i.e.request.META['REMOTE_ADDR']
) I suggest you to use django-ipware to get client ip:
MIDDLEWARE = [
"django_graphql_ratelimit.middleware.ParseClientIpMiddleware",
...
]
header:x-x
- Use the value of request.META.get('HTTP_X_X', '').user
- Use an appropriate value from request.user. Do not use with unauthenticated users.user_or_ip
- Use an appropriate value fromrequest.user
if the user is authenticated, otherwise use request.META['REMOTE_ADDR'] (see the note above about reverse proxies).
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
No source distribution files available for this release.See tutorial on generating distribution archives.
Built Distribution
Close
Hashes for django_graphql_ratelimit-1.0.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e987b9fa1938c61919f2789a8bddc6b73a4b15ff2a60e3ca0c48e152329ab19f |
|
MD5 | 9f84f5e596420dd430721b03bd8a259b |
|
BLAKE2b-256 | 39a17117cd79797ad71f174cd9ad08184f5fe4eec47308fbc327d84070f3ac6a |