redis支持的轻量级异步作业队列。

elon的Python项目详细描述


埃隆

pypi-version

elon是一个由redis支持的轻量级异步作业队列。

为什么叫这个名字?

因为埃隆·马斯克能把事情办好。

它是干什么的?

假设您有一个django或flask应用程序,它严重依赖于网络或io。假设在这个应用程序中,您有一个视图,它会发出一个缓慢的后端api调用。当用户访问此视图时,您的web工作者将被捆绑,直到api响应,这将严重限制您的吞吐量。在某些情况下,您必须等待api的响应生成您的响应(在这种情况下,我建议使用tornado),但在其他情况下,您可能不需要立即响应,在这种情况下,elon非常适合您的情况。

示例

这里有一个长时间运行的任务——假设它不是等待10秒,而是实际命中了一个后端API。

importtimedeflong_api_request():time.sleep(10)

我们可以使用elon将其重写为异步任务:

importasynciofromtasklibimporttask@taskasyncdeflong_api_request():awaitasyncio.sleep(10)

在调用任务时,请在以下时间之前:

@app.route('/enqueue_task')defenqueue_task():# Runs the task and returns once it is complete.long_running_process()return'Success!'

之后:

@app.route('/enqueue_task')defenqueue_task():# Enqueue the task and return instantly.long_running_process.enqueue()return'Success!'

当您对任务调用enqueue()时,您将立即收到一个uuid,您可以使用它查询结果并查看作业进度。

装饰类:

也可以修饰类,只要它们继承自Task。示例:

classComplexTask(Task):defexecute(self):pass

从任务继承的类必须定义自己的execute方法-这是实际调用任务的方法。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
构造函数或创建对象时未调用java组件   java如何序列化Hibernate实体,而不在测试代码中自动生成字段?   swing获取字符串java中的图标包路径   zip Java SE 6使用ZipEntry识别目录时遇到问题   java在Javafx中创建闪存卡集   java检查带有条件的两个变量signum   Kotlin的类型具体化使哪些在Java或Scala中不可能的事情成为可能?   java正在Eclipse中创建@string资源约定?   Java中的数组分离链   java为什么局部变量仍然显示警告,尽管方法中使用了值?   java Selenium Webdriver:自动重复成功的场景   java为什么这会导致堆栈溢出错误?有向图   java如何访问泛型对象的类型?   启用proguard(缩小)时出现java Jackson错误   java使用Spring@Configuration构建rest模板   java为什么springbootdatajdbc查询方法不需要参数构造函数   导入JCC时发生java错误。找不到libjava。所以   Java 8将列表流到具有相同值的映射中   JAVANetbeans中的Log4j2不会打印正确的输出,也不会保存文件