Python GAE CGI:如何响应http状态代码

Python GAE CGI:如何响应http状态代码,python,google-app-engine,cgi,Python,Google App Engine,Cgi,我用的是谷歌Apping,它是CGI环境。我想要阻止一些请求,我想要什么都不响应,甚至没有http状态码。或者,我只想关闭连接。我能做这个吗 更新: 我已经决定使用pyfunc所说的,使用204 status,但在没有任何webframework的GAE CGI环境中,我如何才能做到这一点 更新2: 非常感谢,但是。。。我真的需要CGI方式,而不是WSGI方式。请参阅我的代码中的注释 def main() #Block requests at once. if (settings.BLO

我用的是谷歌Apping,它是CGI环境。我想要阻止一些请求,我想要什么都不响应,甚至没有http状态码。或者,我只想关闭连接。我能做这个吗

更新:

我已经决定使用pyfunc所说的,使用204 status,但在没有任何webframework的GAE CGI环境中,我如何才能做到这一点

更新2:

非常感谢,但是。。。我真的需要CGI方式,而不是WSGI方式。请参阅我的代码中的注释

def main()
  #Block requests at once.
  if (settings.BLOCK_DOWNLOAD and os.environ.get('HTTP_RANGE')) \
        or (settings.BLOCK_EXTENSION.match(os.environ['PATH_INFO'])):
    #TODO: return 204 response in CGI way.
    #I really do not need construct a WSGIApplication and then response a status code.
    return

  application = webapp.WSGIApplication([
    (r'/', MainHandler),
    #...
    ], debug=True)
  run_wsgi_app(application)


if __name__ == '__main__':
  main()
HTTP状态代码在响应中很重要

您可以使用HTTP NO CONTENT 204以空内容进行响应。 你可以使用403禁止,但我更喜欢204无声地提出请求 您可能会失去连接,但这将是不礼貌的,并可能导致服务器在用户可能重试时受到连接的重击。 [编辑:更新的问题]

您可以查看许多使用GAE标记的示例:

据我所知,您将使用webapp框架。加强它的使用

检查如何将响应对象状态代码设置为

下面是一个裸体服务器的示例,它不响应任何内容。我还没有测试过它,但它也会是类似的

import wsgiref.handlers 
from google.appengine.ext import webapp 
class MainHandler(webapp.RequestHandler):
    def get(self): 
        return self.response.set_status(204)

def main(): 
    application = webapp.WSGIApplication([('/', MainHandler)], debug=True)
    wsgi.handlers.CGIHandler().run(application)

if __name__ == '__main__': 
    main()
有关完整的应用程序,请访问:


403“禁止”比204“禁止”更有意义。@尼克·约翰逊:是的,但我们不得不阻止某些坏客户,我们使用了204“禁止”但你为什么不使用403来代替呢?它仍然会阻止他们,但它更正确。另外,不要忘记DOSAPI,它为您实现了这一点。