使用java程序作为celery的工作节点
celery是python实现的分布式调度框架,有时候想用celery去调用java服务,正好有一个celery-java的库可以使用,能达到这个效果,记录一下:
先添加依赖:
<dependency>
<groupId>com.geneea.celery</groupId>
<artifactId>celery-java</artifactId>
<version>1.10.4</version>
</dependency>
先定义任务类TestTask.java
import com.geneea.celery.CeleryTask;
@CeleryTask
public class TestTask {
public int sum(int x, int y){
return x + y;
}
}
再定义工作入口类MyWorker.java
import com.geneea.celery.CeleryWorkerCLI;
public class MyWorker {
public static void main(String[] args) throws Exception {
//注意broker的url的末尾/必须用转义符%2F
args = new String[]{"--queue","celery",
"--concurrency","2",
"--broker","amqp://guest:guest@localhost:5672/%2F"};
CeleryWorkerCLI.main(args);
}
}
运行MyWorker
即可启动java
版的celery
工作节点:
Started consuming tasks from queue celery.
Known tasks:
- cn.main.celery.TestTask
然后定义celery的任务调度程序test.py
:
import celery
app = celery.Celery(broker="amqp://guest:guest@localhost:5672//", backend="rpc://guest:guest@localhost:5672//")
#调度任务格式为pacakage.class#func
result = app.signature("cn.main.celery.TestTask#sum", [1, 2]).delay().get()
print("result is %s" % result)
运行test.py
程序反应如下:
C:\ProgramData\Anaconda3\python.exe D:/Test/python/celerys/javatest.py
result is 3
Process finished with exit code 0
19:06:43.685 INFO [pool-1-thread-1] c.g.c.CeleryWorkerCore:126 - CeleryTask cn.main.celery.TestTask#sum[2c1476a0-0d64-47c8-afce-6ddc99915ea9] succeeded in 338.9 μs
参考链接:
https://bitbucket.org/geneea/celery-java
使用java程序作为celery的工作节点的更多相关文章
- Java程序员的日常 —— 工作一天的收获
看题目可能是扯皮,其实还是有很多专业知识的.从最开始没有注意到设计原则,到后面的jquery实战技巧,都是今天一天碰到的问题. 每天整理一点点,每天收获一点点. 关于软件设计 在设计系统结构的时候,一 ...
- 使用java程序完成大量文件目录拷贝工作
java程序完成目录拷贝工作 背景描述:我目录有140多个,每个目录里面都有一个src目录.我现在想要所有的src目录移动到同一个目录中. package com.util.cp; import ja ...
- Java程序员可能犯的3个常见SQL错误
概述:Java程序员不仅要具备扎实的Java编程能力,在日常的工作当中往往还要涉及到其他语言的基础知识,尤其是SQL.那么哪些常见的SQL错误是程序员们容易犯的呢?让我们一起来看看吧! 你可能看到Ja ...
- 六大利器助Java程序开发事半功倍
实用的开发工具对于Java程序开发者来说,工作起来事半功倍.本文中小编将为大家列举包括开发环境.分析测试.代码保护等实用工具. 开发环境 Sonarqube Sonarqube是一个开源平台,是一款代 ...
- 工作了3年的JAVA程序员应该具备什么技能?(zhuan)
http://www.500d.me/article/5441.html **************************************** 来源:五百丁 作者:LZ2016-03-18 ...
- 工作了3年的JAVA程序员应该具备什么技能?(转)
工作了3年的JAVA程序员应该具备什么技能? 因为和同事有约定再加上LZ自己也喜欢做完一件事之后进行总结,因此有了这篇文章.这篇文章大部分内容都是面向整个程序员群体的,当然因为LZ本身是做Java开发 ...
- 正式工作的前奏——一个Java程序员的实习总结(1)
不知不觉,到深圳实习已经三个礼拜了.跟在暑假的三个半月实习不一样,这次收获更多,感受更好,算是摆脱了那次实习给我带来的阴影(这个会放到以后才说). 在知乎上,有这么一个问题,你现在最想跟刚工作时的你说 ...
- 优秀Java程序员必须了解的GC工作原理(转)
一个优秀的Java程序员必须了解GC(Garbage Collection 垃圾收集)的工作原理.如何优化GC的性能.如何与GC进行有限的交互,因为有一些应用程序对性能要求较高,例如嵌入式系统.实时系 ...
- java程序的工作原理
Sun公司设计java语言的目标是让Java程序不必经过修改就可以在各种各样的计算机(包括PC机和工作站)上运行.为了实现这一目标,Sun公司提供了一阵Java虚拟机(Java Virtual Mac ...
随机推荐
- 算法与数据结构基础 - 双指针(Two Pointers)
双指针基础 双指针(Two Pointers)是面对数组.链表结构的一种处理技巧.这里“指针”是泛指,不但包括通常意义上的指针,还包括索引.迭代器等可用于遍历的游标. 同方向指针 设定两个指针.从头往 ...
- 数据结构与算法—二叉排序树(java)
前言 前面介绍学习的大多是线性表相关的内容,把指针搞懂后其实也没有什么难度.规则相对是简单的. 再数据结构中树.图才是数据结构标志性产物,(线性表大多都现成api可以使用),因为树的难度相比线性表大一 ...
- Flutter学习笔记(20)--FloatingActionButton、PopupMenuButton、SimpleDialog、AlertDialog、SnackBar
如需转载,请注明出处:Flutter学习笔记(20)--FloatingActionButton.PopupMenuButton.SimpleDialog.AlertDialog.SnackBar F ...
- IDEA导入spring-boot-plus(二)
IDEA导入spring-boot-plus 安装lombok插件 !!!请先确保IDEA已安装lombok插件!!! IDEA在线安装lombok插件 IDEA离线下载安装lombok 如果在线安装 ...
- POST提交数据方式
application/x-www-form-urlencoded 这应该是最常见的 POST 提交数据的方式了.浏览器的原生 form 表单,如果不设置 enctype 属性,那么最终就会以 app ...
- Java 迭代接口:Iterator、ListIterator 和 Spliterator
1. 简介 当我们使用 for 或 while 循环来遍历一个集合的元素,Iterator 允许我们不用担心索引位置,甚至让我们不仅仅是遍历一个集合,同时还可以改变它.例如,你如果要删除循环中的元素, ...
- Vue入门到TodoList练手
学习资料 慕课网 - vue2.5入门 基础语法 示例代码1 <div id="root"> <h1>hello {{msg}}</h1> &l ...
- python 18 re模块
目录 re 模块 1. 正则表达式 2. 匹配模式 3. 常用方法 re 模块 1. 正则表达式 \w 匹配字母(包含中文)或数字或下划线 \W 匹配非字母(包含中文)或数字或下划线 \s 匹配任意的 ...
- python学习——python之禅
(一)python之禅: 在python中运行import this你会看到这样一段文字: The Zen of Python, by Tim Peters Beautiful is better ...
- 配置springboot项目使用外部tomcat
配置springboot项目使用外部tomcat 1.在pom文件中添加依赖 <!--使用自带的tomcat--> <dependency> <groupId>or ...