Celery任务执行另一种编程语言的代码

时间:2013-07-05 11:33:10

标签: python ipc celery

我正在尝试从Celery任务调用编译/解释代码。代码是用Python以外的东西编写的。

我想知道问题的解决方案是否比我想到的更好。

解决方案1 ​​。启动另一个进程并执行/解释我感兴趣的代码段。这会产生创建和终止进程的开销。对于一个非常小的任务,开销可能太高。

解决方案2 。使用可以从目标语言执行代码的侦听器进程。它可以在本地套接字上侦听函数签名(也就是ad​​d(2,2),在同一个套接字上执行并返回结果。监听器也可以实现像进程/线程池这样的东西来有效地处理多个任务。

解决方案3 (感谢AndrewS)。构建工作进程(连接到代理)。它意味着将Celery工作者重写为目标语言。就开发工作而言,这是三者中最昂贵的版本。

2 个答案:

答案 0 :(得分:1)

我找到了解决方案。

它也是解决方案2的变体,使用Thrift for RPC和实际的作业代码。代码以目标语言编写,Thrift IDL将其描述为可以生成客户端和服务器的Thrift编译器。客户端显然是Python代码,服务器是目标语言。

Thrift的任何类似替代方案都可以像其他RPC代码生成器一样。

感谢所有答案,我希望有一天能够帮助某人。

答案 1 :(得分:0)

您可以使用Celery HTTP回调任务(Webhooks)

http://docs.celeryproject.org/en/latest/userguide/remote-tasks.html