我为uWSGI编写了一个简单的插件。
#include <uwsgi.h>
static void cycle() {
uwsgi_log("In master cycle\n");
}
struct uwsgi_plugin master_plugin = {
.name = "master",
.master_cycle = cycle,
};
现在我想在我的WSGI应用程序初始化的同一个Python解释器中调用主循环线程中的一些python代码。它有uWSGI API吗?我可以使用python插件:https://github.com/unbit/uwsgi/blob/master/plugins/python/python_plugin.c吗?如果可能的话,请给我一个片段如何做。
更新
评论的一些背景
答案 0 :(得分:1)
在阅读完您的要求之后,我认为您最好的选择是uWSGI 2.1 fork服务器功能:
https://github.com/unbit/uwsgi-docs/blob/master/ForkServer.rst
这显示了如何将它与python一起使用(该功能最初仅针对perl开发):
https://github.com/unbit/uwsgi-docs/blob/master/examples/CPythonForkServer.rst
并且这个帖子包含一些关于它的注释
http://lists.unbit.it/pipermail/uwsgi/2014-June/007444.html
基本上你有两个&#34;无关&#34;实例,一个用于不断构建缓存的实例,另一个用于在需要时从该缓存分叉的实例。
最后,如果你真的想在主循环中运行自定义python代码,这是一个可以从中开始的代码片段:
#include <uwsgi.h>
void PyRun_SimpleString(char *);
static void cycle() {
uwsgi_log("In master cycle\n");
PyRun_SimpleString("print \"aaa\"");
}
struct uwsgi_plugin master_plugin = {
.name = "master",
.master_cycle = cycle,
};