Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

805
Visualizações
Locust: ¿cómo comparto la cookie de autenticación con el resto de tareas solo para el usuario actual de Locust?

Estoy buscando mover mi secuencia de comandos de Python de subprocesos múltiples a Locust.

Una explicación simple de lo que hace mi script es:

  1. Crear un hilo por usuario
  2. En cada hilo autentica al usuario y obtiene la cookie de autenticación.
  3. Con esa cookie de autenticación, realice varias llamadas API en un intervalo establecido

Cuando comencé a investigar Locust, me di cuenta de que la única forma de realizar cada tarea en su propio intervalo específico, necesitaría crear un conjunto de tareas por tarea.

Esto planteó un problema de cómo comparto la cookie de autenticación para el usuario generado dado entre conjuntos de tareas. Dado que, a la larga, también necesito compartir datos de respuesta entre el conjunto de tareas para el usuario generado dado, ya que difiere entre los usuarios generados.

En el código de muestra a continuación, todos los usuarios generados por Locust comparten el mismo "storage.cookie". ¿Hay alguna manera de mantener storage.cookie única por usuario, compartirla con todos los conjuntos de tareas para el usuario generado por langosta? ¿Locust informa sobre qué usuario está ejecutando la tarea actualmente?

 from __future__ import print_function from locust import Locust, TaskSet, task, HttpLocust import json def auth(l): payload = {"username":"some_username","password":"some_password"} resp = l.client.post('/auth', data = json.dumps(payload)) storage.cookie = # get auth cookie from resp def do_i_auth(l): if len(storage.cookie) == 0: auth(l) class storage(object): cookie == '' class first_call(TaskSet): def on_start(self): do_i_auth(self) @task def get_api_a(self): headers = {"Cookie":storage.cookie} self.client.get('/api_a', headers) class second_call(TaskSet): def on_start(self): do_i_auth(self) @task def get_api_b(self): headers = {"Cookie":storage.cookie} self.client.get('/api_b', headers) class api_A(HttpLocust): task_set = first_call min_wait = 5000 max_wait = 5000 class api_B(HttpLocust): task_set = second_call min_wait = 10000 max_wait = 10000
over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Puede intentar que su función de autorización devuelva la cookie y que se almacene en cada clase por separado. Algo como esto:

 from __future__ import print_function from locust import Locust, TaskSet, task, HttpLocust import json def auth(l): payload = {"username":"some_username","password":"some_password"} resp = l.client.post('/auth', data = json.dumps(payload)) cookie = # get auth cookie from resp return cookie class first_call(TaskSet): cookie = "" def on_start(self): self.cookie = auth(self) @task def get_api_a(self): headers = {"Cookie":self.cookie} self.client.get('/api_a', headers)
over 4 years ago · Santiago Trujillo Relatório

0

Creo que la solución aquí es no tener clases separadas para cada llamada, sino tener las llamadas como métodos en una sola clase. De esa manera, puede almacenar las cookies en los objetos (referenciados a través self.cookie ).

Esto funcionó para mí:

https://gist.github.com/MatrixManAtYrService/1d83abd54adc9d4181f9ebb98b9799f7

over 4 years ago · Santiago Trujillo Relatório

0

Recientemente implementé cookies en un script de prueba de carga de aplicaciones DotNet.

Las cookies deben pasarse mediante objetos de diccionario.

 cookiedict={} cookiedict['Key1'] = 'Value1' cookiedict['Key2'] = 'Value2' #Auth API self.auth_response = self.gettoken(cookiedict) self.token = self.auth_response.cookies['RequestVerificationToken'] self.cookies = self.auth_response.cookies #Login API cookiedict['RequestVerificationToken'] = self.token ` self.login_response=self.login(self.user_name,self.password,self.token,cookiedict)

También tenga en cuenta que también necesita usar HttpSession

 from locust.clients import HttpSession self.requests = HttpSession(consumer_cfg.rest_api_url) executor = self.requests.post if method == 'PUT': executor = self.requests.put elif method == 'GET': executor = self.requests.get self._request_proceed(method='GET', url=url, data=formdata,catch_response=catch_response, cookies = CookiesSent,allow_redirects = True)
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda