首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Locust gevent语法?

Locust gevent语法?
EN

Stack Overflow用户
提问于 2021-03-02 01:33:46
回答 1查看 175关注 0票数 1

我成功地在同一个域上使用docker和本地为GET请求运行了locust。但我不能让它在websocket上工作。

我的locustfile.py:

代码语言:javascript
复制
import time, websocket
from locust import HttpUser, task, between, events
from websocket import create_connection
import gevent

class QuickstartUser(HttpUser):
    wait_time = between(1, 5)
    @task
    def on_start(self):
       ws = create_connection('wss://REDACTED.com')
       g = gevent.spawn(self.connect)
       g.get(block=True, timeout=10)
       g = gevent.spawn(self.subscribe)
       g.get(block=True, timeout=10)
       g = gevent.spawn(self.send)
       g.get(block=True, timeout=10)       
       
    def _receive():
       while True:
          res = ws.recv()
          events.request_success.fire(
             request_type='Websocket Receive Message',
             name='test websocket message receive',
             response_time=0,
             response_length=len(res)

    gevent.spawn(_receive)

(摘自

https://medium.com/@rajatsaxena120/websockets-in-python-d91c7bc2fd22

)

我一直收到:

代码语言:javascript
复制
File "./locustfile.py", line 27
    gevent.spawn(_receive)
    ^
SyntaxError: invalid syntax

我还注意到docker镜像中缺少websocket,我如何添加

当py文件不正确时容器立即退出?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-02 01:40:31

您只是省略了下面这行的结束括号:

代码语言:javascript
复制
events.request_success.fire(

下面是你的代码修复:

代码语言:javascript
复制
import time, websocket
from locust import HttpUser, task, between, events
from websocket import create_connection
import gevent

class QuickstartUser(HttpUser):
    wait_time = between(1, 5)
    @task
    def on_start(self):
       ws = create_connection('wss://REDACTED.com')
       g = gevent.spawn(self.connect)
       g.get(block=True, timeout=10)
       g = gevent.spawn(self.subscribe)
       g.get(block=True, timeout=10)
       g = gevent.spawn(self.send)
       g.get(block=True, timeout=10)       
       
    def _receive():
       while True:
          res = ws.recv()
          events.request_success.fire(
             request_type='Websocket Receive Message',
             name='test websocket message receive',
             response_time=0,
             response_length=len(res)
          )
    gevent.spawn(_receive)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66426851

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档