3

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

我想知道是否有比我正在考虑的问题更好的解决方案。

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

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

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

4

2 回答 2

1

我找到了解决方案。

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

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

感谢所有的答案,我希望有一天这对某人有所帮助。

于 2013-08-01T10:16:52.317 回答
0

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

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

于 2013-07-05T13:59:49.503 回答