python - 让 flup fcgi 脚本正常工作很困难

标签 python django fastcgi flup

我正在使用 django 为客户构建一个网站。它托管在共享主机上,无法使用 mod_wsgi。去年,我使用 fcgi 让它工作,但是当我回来时,它坏了。

我用一个简单的 hello world 脚本替换了 fcgi 脚本:

#!/usr/bin/python
def myapp(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/plain')])
    return ['Hello World!\n']

try:
    from flup.server.fcgi import WSGIServer
    WSGIServer(myapp).run()
except:
    import sys, traceback
    traceback.print_exc(file=open("errlog.txt","a"))

在我的本地服务器上测试并工作,但在托管服务器上,我收到此错误:

<title>FCGI Error</title>
A timeout occured while waiting for the script output (in: /usr/www/users/mymemb/).

如果我查看错误日志,我会看到以下内容:

[Wed Jan  6 16:59:37 2010] [warn] FastCGI: (dynamic) server "/usr/www/users/mymemb/mymembers.fcgi" has failed to remain running for 30 seconds given 3 attempts, its restart interval has been backed off to 10 seconds

[Wed Jan  6 16:59:38 2010] [warn] FastCGI: (dynamic) server "/usr/www/users/mymemb/mymembers.fcgi" has failed to remain running for 30 seconds given 3 attempts, its restart interval has been backed off to 10 seconds

[Wed Jan  6 16:59:38 2010] [warn] FastCGI: (dynamic) server "/usr/www/users/mymemb/mymembers.fcgi" (user mymemb, gid 100) restarted (pid 1057)

[Wed Jan  6 16:59:38 2010] [warn] FastCGI: (dynamic) server "/usr/www/users/mymemb/mymembers.fcgi" (pid 1057) terminated by calling exit with status '118'

[Wed Jan  6 16:59:38 2010] [warn] FastCGI: (dynamic) server "/usr/www/users/mymemb/mymembers.fcgi" has failed to remain running for 30 seconds given 3 attempts, its restart interval has been backed off to 10 seconds

[Wed Jan  6 16:59:38 2010] [warn] FastCGI: (dynamic) server "/usr/www/users/mymemb/mymembers.fcgi" has failed to remain running for 30 seconds given 3 attempts, its restart interval has been backed off to 10 seconds

[Wed Jan  6 16:59:38 2010] [warn] FastCGI: (dynamic) server "/usr/www/users/mymemb/mymembers.fcgi" has failed to remain running for 30 seconds given 3 attempts, its restart interval has been backed off to 10 seconds

etc ...

如果我通过 ssh 连接到服务器,我可以正常运行脚本,并输出以下内容:

mymemb@www81:~/public_html$ ./mymembers.fcgi 
WSGIServer: missing FastCGI param REQUEST_METHOD required by WSGI!
WSGIServer: missing FastCGI param SERVER_NAME required by WSGI!
WSGIServer: missing FastCGI param SERVER_PORT required by WSGI!
WSGIServer: missing FastCGI param SERVER_PROTOCOL required by WSGI!
Status: 200 OK
Content-Type: text/plain
Content-Length: 13

Hello World!

如何解决这个问题?

添加信息:

脚本似乎根本没有运行。如果我在脚本顶部添加 import x 并从 ssh 运行它,我会看到 x.pyc 被创建。如果我 rm x.pyc,然后点击该站点,则不会创建 x.pyc。

我还注意到错误从

terminated by calling exit with status '118'

terminated by calling exit with status '116'

我希望能够找到这些退出状态的引用。

最佳答案

退出状态 116 和 118 来自 suexec。通过阅读source code ,我发现这些错误是由组或其他人可写文件/目录引起的,suexec 认为这是一个安全问题。从组中删除写入权限修复了问题。

关于python - 让 flup fcgi 脚本正常工作很困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2013936/

相关文章:

Django:访问不同服务器上的数据库: "The fastCGI process exceeded configured activity timeout"

python - chrome 和 flask 的超时问题

python - python 3.4 的正则表达式

django - 如何将 "Add Another"链接按钮内联移动到顶部 Django Admin

python - 评论模型仅适用于用户 django(1048, “Column ' user_id'不能为空”或没有用户填写)

php - 没有这样的文件或目录 : AH02454: FCGI: attempt to connect to Unix domain socket/var/run/php/php5. 6-fpm.sock (*) failed

python - 将命令行工具的使用帮助添加到 README.rst

python - 单元格pyqt中的小部件对齐

django - 是否可以覆盖用户模型以使电子邮件字段成为必填字段?

php - fastcgi:php未与mysql连接?