使用外部python插件运行asyncio循环引擎

Gwy*_*idD 18 uwsgi python-3.x greenlets python-asyncio

我安装了以emperor模式运行的uWSGI.Vassals使用不同的python版本,因此我不能在uWSGI二进制文件中嵌入python插件.

有了这个,我想在其中一个封锁中使用asyncio循环引擎,但我无法弄清楚如何运行非嵌入的asyncio插件和greenlet插件.

到目前为止我尝试过的:

  • 将asyncio和greenlet嵌入到uWSGI中,使用:

    CFLAGS="-I/usr/local/include/python3.4" make PYTHON=python3.4 asyncio
    
    Run Code Online (Sandbox Code Playgroud)

    建立uWSGI.但这也将嵌入python插件,我不想要它.

  • 使用以下方法构建asyncio和uwsgi作为外部插件:

    PYTHON=python3.4 ./uwsgi --build-plugin "plugins/greenlet greenlet"
    PYTHON=python3.4 ./uwsgi --build-plugin "plugins/greenlet greenlet"
    
    Run Code Online (Sandbox Code Playgroud)

    构建插件,但插件无法加载:

    /usr/local/lib/uwsgi/asyncio_plugin.so:unfined defined symbol:up
    /usr/local/lib/uwsgi/greenlet_plugin.so:undefined symbol:up

    在日志中.

    //编辑

    我已经发现必须在设置中的asyncio和greenlet之前启用python插件,因此错误不再发生,但greenlet不起作用,当前greenlet中没有父级.

我还能尝试做些什么?我敢打赌,在python3.4插件中嵌入asyncio和greenlet会起作用,但我不知道该怎么做或者甚至可能.

目前我正在使用内置所需插件的第二个皇帝,但由于平台的限制,我不能再使用该解决方案了.

cod*_*ape 1

我相信您应该遵循此处概述的方法:https ://uwsgi-docs.readthedocs.io/en/latest/WSGIquickstart.html#bonus-multiple-python-versions-for-the-same-uwsgi-binary

基本上:

  • 构建一个没有Python插件的核心uwsgi二进制文件(供皇帝使用):make PROFILE=nolang
  • 然后为您使用的每个 python 版本(对于 vassal)构建插件,并配置每个 vassal 以使用正确的插件。

  • 是的,这就是我试图遵循的方法。问题出在其他地方:我无法为单个 vassal 指定 2 个插件,并且我无法找到一种将 python 和 greenlet 插件组合到一个插件中的方法。我已经放弃了皇帝/附庸方法,并且使用由 systemd 管理的单独的 uWSGI 服务,但找到解决方案仍然很好。 (2认同)