我正在尝试从Celery任务调用编译/解释代码。代码是用Python以外的东西编写的。
我想知道问题的解决方案是否比我想到的更好。
解决方案1 。启动另一个进程并执行/解释我感兴趣的代码段。这会产生创建和终止进程的开销。对于一个非常小的任务,开销可能太高。
解决方案2 。使用可以从目标语言执行代码的侦听器进程。它可以在本地套接字上侦听函数签名(也就是add(2,2),在同一个套接字上执行并返回结果。监听器也可以实现像进程/线程池这样的东西来有效地处理多个任务。
解决方案3 (感谢AndrewS)。构建工作进程(连接到代理)。它意味着将Celery工作者重写为目标语言。就开发工作而言,这是三者中最昂贵的版本。
答案 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