【问题标题】:a little bit of python help一点点python帮助
【发布时间】:2010-11-03 18:03:10
【问题描述】:

在这里我需要一点帮助,因为我是 python 新手,我正在尝试做一个不错的应用程序,它可以告诉我我的网站是否关闭,然后将其发送到 twitter。

class Tweet(webapp.RequestHandler):
  def get(self):
    import oauth
    client = oauth.TwitterClient(TWITTER_CONSUMER_KEY,
                                 TWITTER_CONSUMER_SECRET, 
                                 None
                                 )

    webstatus = {"status": "this is where the site status need's to be",
                 "lat": 44.42765100, 
                 "long":26.103172
                 }

    client.make_request('http://twitter.com/statuses/update.json',
                        token=TWITTER_ACCESS_TOKEN,
                        secret=TWITTER_ACCESS_TOKEN_SECRET,
                        additional_params=webstatus,
                        protected=True,
                        method='POST'
                        )
    self.response.out.write(webstatus)


def main():
  application = webapp.WSGIApplication([('/', Tweet)])
  util.run_wsgi_app(application)


if __name__ == '__main__':
  main() 

现在检查网站部分丢失了,所以我对 python 非常陌生,我需要一点帮助

任何可以检查特定 url 的函数/类的想法和答案/错误代码都可以使用上面的脚本发送到 twitter

在上面的脚本中实现 url 检查时我需要一些帮助,这是我第一次与 python 交互。

如果你想知道,上层使用https://github.com/mikeknapp/AppEngine-OAuth-Library lib

干杯

PS:url检查功能需要基于urlfetch类,对google appengine更安全

【问题讨论】:

  • 您是想判断您的网站是否已关闭或 twitter 是否已关闭?
  • -1:您未经测试就接受了答案!

标签: python google-app-engine


【解决方案1】:

您可以使用 Google App Engine URL Fetch API。
fetch() 函数返回一个包含 HTTP 状态码的 Response object

只需获取 url 并使用以下内容检查状态:

from google.appengine.api import urlfetch
def is_down(url):
    result = urlfetch.fetch(url, method = urlfetch.HEAD)
    return result.status_code != 200

【讨论】:

  • 也许使用fetch(url, method=urlfetch.HEAD) 会更好,这样只返回 HTTP 标头而不是整个网页的内容。
  • @Giulio 只要确保你的应用支持 HEAD 请求;一些框架默认情况下不会。
  • +1,你的答案是正确的。可惜 necenzurat 这么快就接受了对方。
【解决方案2】:

检查网站是否存在:

import httplib
from httplib import HTTP
from urlparse import urlparse

def checkUrl(url):
    p = urlparse(url)
    h = HTTP(p[1])
    h.putrequest('HEAD', p[2])
    h.endheaders()
    return h.getreply()[0] == httplib.OK

我们只获取给定 URL 的标头并检查 Web 服务器的响应代码。

更新:最后一行根据Daenyth的备注修改。

【讨论】:

  • 最后两行应该是return h.getreply()[0] == httplib.OK
  • 建议:向您的网站发出特殊状态请求,以获得比请求网页更好的诊断。这将更容易解析,因为您可以将其设为 JSON 或本机数据类型。使用 python,我的网站上通常有一个 /status url。对于更简单的 PHP 站点,我会检查 $_REQUEST['status'] 变量。
  • 我在 10 分钟内完成了 php 脚本,并使用 curl 错误报告作为消息
  • 我认为 httplib 在 GAE 沙箱中不可用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-21
  • 2018-05-21
  • 2014-09-22
  • 2014-04-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多