{"id":889,"date":"2010-04-14T12:53:41","date_gmt":"2010-04-14T04:53:41","guid":{"rendered":"http:\/\/blog.axqd.net\/?p=889"},"modified":"2010-04-14T12:53:41","modified_gmt":"2010-04-14T04:53:41","slug":"steps-to-install-mirrorrr-and-birdnest-to-gae","status":"publish","type":"post","link":"https:\/\/blog.axqd.net\/?p=889","title":{"rendered":"Steps to install mirrorrr and birdnest to GAE"},"content":{"rendered":"<ol>\n<li>Create a GAE application named &#8216;&lt;xxx&gt;-proxy&#8217;;<br \/>\n@ https:\/\/appengine.google.com<\/li>\n<li>Download the GAE SDK and then unzip it;<br \/>\n@ https:\/\/code.google.com\/appengine\/downloads.html<\/li>\n<li>svn checkout http:\/\/mirrorrr.googlecode.com\/svn\/trunk\/ &lt;xxx&gt;-proxy<\/li>\n<li>Change application name to &#8216;&lt;xxx&gt;-proxy&#8217; and version to &#8216;1&#8217; in app.yaml file<\/li>\n<li>Delete index.yaml file<\/li>\n<li>appcfg.py update xxx-proxy<\/li>\n<\/ol>\n<p>\u81ea\u5df1\u5efa\u4e00\u4e2a\u662f\u597d\u4e60\u60ef\uff0c\u8868\u8001\u62a2\u522b\u4eba\u7684\u6d41\u91cf\u7528\uff0c\u970d\u970d~~~<\/p>\n<p><strong>Updated: Steps to install Birdnest to GAE<\/strong><\/p>\n<ol>\n<li>Create a GAE application named &#8216;&lt;xxx&gt;-twitter&#8217;;<br \/>\n@ https:\/\/appengine.google.com<\/li>\n<li>Download the GAE SDK and then unzip it;<br \/>\n@ https:\/\/code.google.com\/appengine\/downloads.html<\/li>\n<li> svn checkout http:\/\/birdnest.googlecode.com\/svn\/branches\/gae\/<br \/>\nDO NOT USE TRUNK<\/li>\n<li>Change application name to &#8216;&lt;xxx&gt;-twitter &#8216; in app.yaml file<\/li>\n<li>Remove the following codes from code.py file.<br \/>\n<blockquote><p>import socket<br \/>\nimport re<br \/>\nua = web.ctx.environ.get(&#8220;HTTP_USER_AGENT&#8221;, &#8216;None&#8217;)<br \/>\nif ua.find(&#8216;jibjib) &gt;= 0:<br \/>\nsocket.setdefaulttimeout(60)<br \/>\nelif ua.find(&#8216;zh-CN&#8217;) &gt;= 0:<br \/>\n#raise Exception(&#8216;unknown error&#8217;)<br \/>\nsocket.setdefaulttimeout(2)<br \/>\nelse:<br \/>\nsocket.setdefaulttimeout(2)<\/p><\/blockquote>\n<\/li>\n<li>appcfg.py update xxx-twitter<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Create a GAE application named &#8216;&lt;xxx&gt;-proxy &hellip; <a href=\"https:\/\/blog.axqd.net\/?p=889\" class=\"more-link\">\u7ee7\u7eed\u9605\u8bfb<span class=\"screen-reader-text\">\u201cSteps to install mirrorrr and birdnest to GAE\u201d<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[69,72,129],"class_list":["post-889","post","type-post","status-publish","format-standard","hentry","category-tech","tag-gfw","tag-google-app-engine","tag-python"],"_links":{"self":[{"href":"https:\/\/blog.axqd.net\/index.php?rest_route=\/wp\/v2\/posts\/889","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.axqd.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.axqd.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.axqd.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.axqd.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=889"}],"version-history":[{"count":0,"href":"https:\/\/blog.axqd.net\/index.php?rest_route=\/wp\/v2\/posts\/889\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.axqd.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=889"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.axqd.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=889"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.axqd.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=889"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}