django全栈(四):django-备份数据库到dropbox
- 需求
我有一个vps,既可以当梯子的服务端,也放了我的django网站。有一个很坑的地方是,不能登陆邮箱发邮件。是的,用smtplib、yagmail发邮件,统统连不上服务器,但是可以ping通邮件服务网关。
为这个问题,我还在stackoverflow上奋战了多日,有些说是25端口被禁用,需要找厂家咨询,申请开通。
然后问了下客服,说不支持发邮件。。。。。坑。。。。。
然后,我的网站每日备份就得着落在dropbox上了。。。
由于之前用的wordpress搭的博客,自带插件可以备份数据库到dropbox。挺好用的,而且在vps上是成功的。
ps:没有梯子的同学,还是歇了吧,dropbox你连不上啊。。。连不上,你咋在自己的环境上测试。。。
- python上传文件到dropbox代码
import dropbox
import zipfile
import os
import sys
TOKEN = "mytoken....."
dbx = dropbox.Dropbox(TOKEN)
dbx.users_get_current_account()
def put_file(path, upload_name):
with open(path, "rb") as f:
dbx.files_upload(f.read(), "/{}".format(upload_name))
def zip_file(file_path, zip_path):
ziph = zipfile.ZipFile(zip_path, "w", zipfile.ZIP_DEFLATED)
ziph.write(file_path)
ziph.close()
if __name__ == '__main__':
if len(sys.argv) < 3:
print("usage file_to_upload file_name")
exit(1)
BASE_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), os.pardir, os.pardir)
print(BASE_DIR)
tmp_file_name = "{}/{}".format(BASE_DIR, sys.argv[2])
zip_file(sys.argv[1], tmp_file_name)
put_file(tmp_file_name, sys.argv[2])
命令行传入要上传的文件路径和上传后文件名。然后将文件打个zip包,然后上传到dropbox。
- dropbox创建app教程
首先,官网链接在这里https://www.dropbox.com/developers/apps/create。
没梯子看不了。我截张图吧。。。
点几下就创建成功了。
然后在自己已经创建的app配置页面,又截了张图如下。
点击Generated access token下面的一个按钮就可以产生你的Token了。这个token复制到你的python代码中,即可访问到你的dropbox相关目录。可以获取帐户信息,目录信息,上传文件等。
OK,到这基本大功告成。