funboost初探

官方文档:https://funboost.readthedocs.io/zh/latest/index.html

1 环境部署

pip install funboost --upgrade
## funboost==18.9

例:

import time
from funboost import boost, BrokerEnum


@boost("task_queue_name1", qps=0.5, broker_kind=BrokerEnum.RABBITMQ_AMQPSTORM)  # 入参包括20种,运行控制方式非常多,想得到的控制都会有。
def task_fun(x, y):
    print(f'{x} + {y} = {x + y}')
    time.sleep(3)  # 框架会自动并发绕开这个阻塞,无论函数内部随机耗时多久都能自动调节并发达到每秒运行 5 次 这个 task_fun 函数的目的。


if __name__ == "__main__":
    for i in range(2):
        task_fun.push(i, y=i * 2)  # 发布者发布任务
    task_fun.consume()  # 消费者启动循环调度并发消费任务

执行报错

  • 报错1:ImportError: cannot import name ‘soft_unicode’ from 'markupsafe’

查看已安装包的版本

pip show markupsafe

弃用警告:“soft_unicode”已重命名为“soft_str”.旧名称将在 MarkupSafe 2.1 中删除,只能降级

pip install markupsafe==2.0.1
  • 报错2:ImportError: cannot import name ‘BaseResponse’ from ‘werkzeug.wrappers’

降级处理

pip install werkzeug-1.0.1 (0.16.1)

第一次执行,相关配置文件会自动在根目录下生成,上面用的是mq,配置完mq后,就可以执行了。

2 flask中使用

消费者

import time
from funboost import boost, BrokerEnum


@boost("mo_queue_t", qps=0.5, broker_kind=BrokerEnum.RABBITMQ_AMQPSTORM)  # 入参包括20种,运行控制方式非常多,想得到的控制都会有。
def task_fun(x, y):
    print(f'{x} + {y} = {x + y}')
    time.sleep(3)  # 框架会自动并发绕开这个阻塞,无论函数内部随机耗时多久都能自动调节并发达到每秒运行 5 次 这个 task_fun 函数的目的。


if __name__ == "__main__":
    # for i in range(2):
    #     task_fun.push(i, y=i * 2)  # 发布者发布任务
    task_fun.consume()  # 消费者启动循环调度并发消费任务

生产者

......
from c_task.sample_f2 import task_fun

@server.route('/')
def index():
    task_fun.push(1, 2)
    return '<h1>success</h1>'
posted @ 2023-03-01 21:06  默默雷  阅读(777)  评论(0编辑  收藏  举报