【问题标题】:How to package locust file with pyinstaller如何使用 pyinstaller 打包 locust 文件
【发布时间】:2021-01-12 17:26:38
【问题描述】:

在虚拟环境中我安装了 locust。 我想创建可分发的包,以便任何用户都可以运行负载测试。 我使用了pyinstaller。 exe文件已创建,但当我运行它时没有任何反应。

from locust import HttpUser, TaskSet, task
import orjson as json
 
 
def create_post(self):
    paramsDict = {}
    paramsDict = json.loads('{ ...myjson.. }')
    params = json.dumps(paramsDict) #for orjson
    headers = {'content-type': 'application/json','Accept-Encoding':'gzip'}
    
    response = self.client.post("/",data= params, headers=headers, name = "Post query")
    print(f'response -> {response}')
 
 
class WebsiteUser(HttpUser):
    tasks = [create_post]

正如 Axel 指出的那样,我使用 locust 作为图书馆。 我用 pyinstaller 构建并测试运行只是网页没有显示

I build with pyinstaller but web did not appear `response -> <Response [200]>
Traceback (most recent call last):
  File "gevent\pywsgi.py", line 999, in handle_one_response
  File "gevent\pywsgi.py", line 945, in run_application
  File "flask\app.py", line 2464, in __call__
  File "flask\app.py", line 2450, in wsgi_app
  File "flask\app.py", line 1867, in handle_exception
  File "flask\_compat.py", line 39, in reraise
  File "flask\app.py", line 2447, in wsgi_app
  File "flask\app.py", line 1952, in full_dispatch_request
  File "flask\app.py", line 1821, in handle_user_exception
  File "flask\_compat.py", line 39, in reraise
  File "flask\app.py", line 1950, in full_dispatch_request
  File "flask\app.py", line 1936, in dispatch_request
  File "locust\web.py", line 419, in wrapper
  File "locust\web.py", line 132, in index
  File "flask\templating.py", line 138, in render_template
  File "jinja2\environment.py", line 930, in get_or_select_template
  File "jinja2\environment.py", line 883, in get_template
  File "jinja2\environment.py", line 857, in _load_template
  File "jinja2\loaders.py", line 115, in load
  File "flask\templating.py", line 60, in get_source
  File "flask\templating.py", line 89, in _get_source_fast
jinja2.exceptions.TemplateNotFound: index.html
2021-01-11T11:29:52Z {'REMOTE_ADDR': '127.0.0.1', 'REMOTE_PORT': '61083', 'HTTP_HOST': 'localhost:8089', (hidden keys: 31)} failed with TemplateNot

模板需要包含在构建中。 在我添加到数据部分的规范文件中,以及带有 java 脚本和 css 的静态文件中

datas=[('<path>\\Lib\\site-packages\\locust\\templates', 'locust\\templates'),('<path>\\Lib\\site-packages\\locust\\static', 'locust\\static')],

使用 Inno Setup,我还将这些添加到文件夹中,与可执行文件位于同一文件夹中。 并显示网页。

【问题讨论】:

    标签: locust


    【解决方案1】:

    这一切都取决于您希望如何执行测试以及您真正打包的是什么。蝗虫有不同的使用方法。假设您想将测试文件打包为可执行文件,您可能需要在文件中包含一个使用 locust 作为 library

    的主入口点

    如果您要打包 locust 本身和包含测试文件的 virtualenv,您可能需要指定如何将 locust 作为命令运行并将测试文件作为命令行参数传递

    【讨论】:

    • 你好 Axel,谢谢你,是的,我会这样做,或者我也在考虑使用 docker。
    • 只是补充:正如@a​​xel-mendoza 指出的那样,我使用蝗虫作为库。我需要import gevent
    猜你喜欢
    • 2018-02-06
    • 1970-01-01
    • 2019-05-04
    • 2020-11-25
    • 1970-01-01
    • 1970-01-01
    • 2018-07-06
    • 1970-01-01
    相关资源
    最近更新 更多