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>'