web-server – 如何使用Lighttpd和FastCGI设置Python(如PHP)

前端之家收集整理的这篇文章主要介绍了web-server – 如何使用Lighttpd和FastCGI设置Python(如PHP)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Linux上运行Lighttpd,我希望能够像执行 PHP脚本一样执行 Python脚本.

目标是能够执行存储在WWW目录中的任意脚本文件,例如,http://www.example.com/*.py.

>我不想为每个请求生成一个新的Python实例(解释器)(比如在常规CGI中完成,如果我没有弄错的话),这就是我使用FastCGI的原因.
>在Lighttpd’s documentation之后,以下是我的配置文件的FastCGI部分.问题是它始终为每个* .py文件运行/usr/local / bin / python-fcgi脚本,而不管该文件内容如何:

http://www.example.com/script.py [output =>]“python-fcgi:test”

(不论script.py的内容如何)
>我对使用任何框架都不感兴趣,只是执行单个[web]脚本.

如何让它像PHP一样,通过请求它的路径执行WWW目录中的任何脚本?

/etc/lighttpd/conf.d/fastcgi.conf:

server.modules += ( "mod_fastcgi" )

index-file.names += ( "index.PHP" )

fastcgi.server = (
    ".PHP" => (
        "localhost" => ( 
            "bin-path" => "/usr/bin/php-cgi","socket" => "/var/run/lighttpd/PHP-fastcgi.sock","max-procs" => 4,# default value
            "bin-environment" => (
                "PHP_FCGI_CHILDREN" => "1",# default value
            ),"broken-scriptfilename" => "enable"
          )
    ),".py" =>
    (
        "python-fcgi" =>
        (
         "socket" => "/var/run/lighttpd/fastcgi.python.socket","bin-path" => "/usr/local/bin/python-fcgi","check-local" => "disable","max-procs" => 1,)
    )
)

在/usr/local / bin目录/蟒蛇-FCGI:

#!/usr/bin/python2

def myapp(environ,start_response):
    start_response('200 OK',[('Content-Type','text/plain')])
    return ['python-fcgi: test\n']

if __name__ == '__main__':
    from flup.server.fcgi import WSGIServer
    WSGIServer(myapp).run()

解决方法

构建PHP(FastCGI)解释器以这种方式运行PHP文件;即它运行一个脚本,然后忘记它的所有内部状态,然后重新开始.

Python不是为此而构建的.

您可以尝试在flup之上构建解决方案;您将__import__请求的脚本并在其中调用“handleRequest”函数或类似.

您可以“重新加载”模块来更新它:https://stackoverflow.com/questions/437589/how-do-i-unload-reload-a-python-module

但是你无法卸载模块,因此内存使用量会增长:https://stackoverflow.com/questions/3105801/unload-a-module-in-python

猜你在找的HTML相关文章