Skip to content

Instantly share code, notes, and snippets.

@rj76
Created December 8, 2018 17:16
Show Gist options
  • Save rj76/9f08cfe325404fc46a2107f1ca859537 to your computer and use it in GitHub Desktop.
Save rj76/9f08cfe325404fc46a2107f1ca859537 to your computer and use it in GitHub Desktop.
Use locust on all API views in project
import json
from io import StringIO
import os
import django
from django.conf import settings
from django.core import management
from locust import HttpLocust, TaskSet
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'settings')
django.setup()
out = StringIO()
management.call_command(
'show_urls',
format='json',
stdout=out
)
patterns = json.loads(out.getvalue())
headers = {'Authorization': 'Token %s' % settings.TOKEN}
def factory(path):
def _locust(locust):
locust.client.get(path, headers=headers)
return _locust
alltasks = {factory(pattern['url']): 1 for pattern in patterns if '-list' in pattern['name']}
class UserBehavior(TaskSet):
tasks = alltasks
class WebsiteUser(HttpLocust):
task_set = UserBehavior
min_wait = 1000
max_wait = 5000
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment