欧美中文字幕第一页-欧美中文字幕一区-欧美中文字幕一区二区三区-欧美中文字幕在线-欧美中文字幕在线播放-欧美中文字幕在线视频

解決dropbox中國無法及時自動同步的問題

我是創始人李巖:很抱歉!給自己產品做個廣告,點擊進來看看。  

  最近由于想要使用dropbox的多人協作功能,就發現dropbox不能自動同步其他機器上產生的文件變化,經過一番搜索,發現原來是gfw在作怪(gfw和gd的性質和用心我們心知肚明,就不在這里評價了)。月光博客發布了解決dropbox無法實時更新的問題分析了產生這個問題的原因并提出一個有效的解決方案。但是在使用時我發現,我找不到一個優良穩定的代理服務器,也沒工夫去學習privoxy軟件的配置和使用,而且我要將解決方案提供給我的合伙人,一個復雜的方案是不能接受的。經過一番研究,提出如下比較簡單的辦法。

  分析

  我發現dropbox向notify8發出的請求很簡單,回應也很簡單,一共有兩種:{"ret":"new"}和{"ret":"punt"}

  分別表示云端有變化和無變化,然后客戶端考慮去下載文件列表并同步。

  經過一番痛苦的失敗,我發現這個請求的其實是一個comet請求,服務器端并不馬上回應,而是會掛起,如果有變化,則馬上回應,如果一直沒有變化,大約一分鐘超時回應punt,然后客戶端再連接服務器。在我分析dropbox的過程中一直不解:為什么dropbox的其他請求都是https,而只有這一個請求是http的。現在找到了答案:因為它是comet請求,長連接,而且連接頻率非常高,如果使用https代價太大,而且影響效率。如果這個請求返回new,客戶端就會使用https連接服務器端。

  解決

  由此提出一個完美的解決方案,不僅可以解決本機的問題,而且可以解決朋友的問題,只要讓朋友修改hosts為我的ip地址:

  • 修改hosts將notify8對應的ip地址改為本機
  • 在本機建立一個http服務,代理notify8得到dropbox的返回值,再原封不動地返回給本機dropbox客戶端

  具體方法是使用tornado,進行一步http請求,這樣只占用很少一部分系統資源。貼出代碼。

  代碼

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
from tornado.options import define, options
from tornado import httpclient


define("port", default=8888, help="run on the given port", type=int)


class application(tornado.web.application):
&&& def __init__(self):
&&&&&&& handlers = [
&&&&&&&&&&& (r"/subscribe", notifyhandler),
&&&&&&&&&&& (r"/.*", homehandler),
&&&&&&& ]
&&&&&&& settings = dict(
&&&&&&&&&&& debug=true,
&&&&&&& )
&&&&&&& self.debug = true
&&&&&&& tornado.web.application.__init__(self, handlers, **settings)


class homehandler(tornado.web.requesthandler):
&&& def get(self):
&&&&&&& self.set_header("content-type", "text/plain")
&&&&&&& self.write("hello from tornado!")


class notifyhandler(tornado.web.requesthandler):
&&& @tornado.web.asynchronous
&&& def get(self):
&&&&&&& self.set_header("content-type", "text/plain")
&&&&&&& url = xxxxx #關鍵代碼還是不貼出來了,人怕出名豬怕壯,要是大多數人會用了,估計這個方法死期不遠矣!
&&&&&&& http_client = httpclient.asynchttpclient()
&&&&&&& http_client.fetch(url, self.handle_response, request_timeout=100.0)

&&& def handle_response(self, response):
&&&&&&& if response.error:
&&&&&&&&&&& print "can not connect."
&&&&&&&&&&& self.write("{\"ret\": \"new\"}")
&&&&&&& else:
&&&&&&&&&&& print "connect successfull."
&&&&&&&&&&& self.write(response.body)
&&&&&&& self.finish()


def main():
&&& tornado.options.parse_command_line()
&&& http_server = tornado.httpserver.httpserver(application())
&&& http_server.listen(options.port)
&&& tornado.ioloop.ioloop.instance().start()

if __name__ == "__main__":
&&& main()

  來源:投稿,原文鏈接。

隨意打賞

提交建議
微信掃一掃,分享給好友吧。
主站蜘蛛池模板: 久久首页| www.久久精品视频 | 大陆一级毛片 | 日本高清中文字幕一区二区三区 | 免费观看一级成人毛片软件 | 欧美专区亚洲专区 | 女18毛片| 亚洲精品中文一区不卡 | 99精品高清视频一区二区 | 国产成人在线观看免费网站 | 日产一二三四五六七区麻豆 | 国产高清自拍视频 | 免费爱爱小视频 | 四虎国产精品免费久久影院 | 极品女神西比尔久久精品 | a视频在线观看 | 91视频一区 | 99热在线免费播放 | 四虎国产精品成人永久免费影视 | 6080欧美一区二区三区四区 | 桃色婷婷 | 国产三级做爰在线观看∵ | 久久手机免费视频 | 国产一区精品视频 | 欧美jizzhd精品欧美另类 | 一区二区视频在线观看免费的 | 琪琪色在线视频 | 国产精品不卡在线 | 久久精品国产91久久麻豆自制 | 亚洲国产综合精品中文第一区 | 国产香蕉国产精品偷在线观看 | 狠狠色噜噜狠狠狠狠2018 | 久久久夜色精品国产噜噜 | 日韩欧美高清在线 | 拍拍拍精品视频在线观看 | 在线观看欧洲成人免费视频 | 久久狠色噜噜狠狠狠狠97 | 草视频在线观看 | 欧美一级特黄毛片免费 | 国产精品天天操 | 大乳欲妇三级一区二区三区 |