我的后端是用.NET/C#编写的,我有一个需求,需要从.net侧传递上下文执行python脚本。这些脚本排队在一个名为hangfire的后台任务引擎中,它作为一个Windows服务运行。
我进行了一些探索,并找到了IronPython,但是,在实现后发现它不支持我需要在脚本中执行的许多pypi python包。
其次,我查看了Python.Net,它是一个嵌入式解释器,可以嵌入或扩展CPython。CPython可以运行我需要的所有脚本/等等,但是,我发现始终打开/关闭python解释器可能会创建相当多的内存泄漏,并且那里总是有线程约束。有关详细信息,请参见文档。
我想知道在.NET中实现Python互操作和嵌入是否是一个好主意。我在想,使用类似celery这样的东西将python作为其自己的执行引擎,并使用类似protobufs之类的东西在两者之间编组数据是否是更好的解决方案?这会增加我的堆栈中更多的复杂性和一个额外的任务引擎。
我想知道其他人是否有任何想法/反馈/经验,尝试实现类似的东西?谢谢!