lavande
V2EX  ›  Flask

flask 开发的正确姿势是什么?

  •  
  •   lavande · Aug 12, 2016 · 11743 views
    This topic created in 3741 days ago, the information mentioned may be changed or developed.

    我在搞一个小项目,现学现卖,基于 flask 写的,但是感觉做法很不专业,应该怎样提高效率呢? 现在的做法是: ssh 登录服务器, nano 打开一个 py 文件,敲代码,保存退出, flask 运行代码,打开网页观察,出错之后重复以上步骤修改…… 感觉很不对!

    Supplement 1  ·  Aug 12, 2016
    多谢大家回复!
    我有个地方没说清楚,没来在想能不能本地开发的,但是因为做的是微信公众平台相关的东西,然后一上来就要我绑定一个服务器,然后我就去买了腾讯云,而且不是买了给它 IP 地址就行,而是要接住微信 POST 过来的参数,然后验证之后返回给它……
    于是我就在服务器上直接开始写了,然后发现后面接收公众号消息啊之类的功能也是直接推到服务器的,我在本地开发的话,没法接受微信服务器过来的信息啊,已经绑定了 IP ,而且我自己本地的 IP 是不确定的……
    Supplement 2  ·  Aug 15, 2016
    感谢大家回复,学习了!
    50 replies  •  2017-04-06 10:10:53 +08:00
    Hyponet
    Hyponet
    Aug 12, 2016
    1
    你是问 flask 怎么用还是怎么开发- -

    最简单的就是用 ide 比如 pycharm ,然后本地 debug ,本地搞得差不多再发布

    不过话说少年你很有线上 debug 的潜质啊
    wbolor
    wbolor
    Aug 12, 2016
    2
    简单点就使用 git , 本地在一个分支开发, 线上 master 分支,部署的时候拉 master 分支代码就好了。。。
    yh7gdiaYW
    yh7gdiaYW
    Aug 12, 2016
    3
    推荐先本地用 pycharm ,自带 flask 支持(比如进入 templates 的 html 页可以提示你传进来的变量)。然后 push 到 git 上,例如 github&coding 。最后 ssh 到你的服务器里 checkout&pull
    yh7gdiaYW
    yh7gdiaYW
    Aug 12, 2016
    4
    (不过我更喜欢本地写完后, xftp 直接复制过去)
    Em5O7B1JGfjQnBry
    Em5O7B1JGfjQnBry
    Aug 12, 2016 via Android
    5
    先本地开发,觉得可行之后,然后发布上服务器,另,学学 vim/Emacs ,在服务器端其实挺方便的
    incesa
    incesa
    Aug 12, 2016
    6
    @yh7gdiaYW 开是我也这样 后代代码修改的次数多了 就乱套了
    Kilerd
    Kilerd
    Aug 12, 2016
    7
    兄弟,你的姿势很优雅。

    讲道理,你的开发姿势完全错了吧。

    首先你要有一个编辑器 /ide 。 本地用 virtualenv 隔离 python 包(可有可无,建议用上)

    本地创建 flask 工程。 用 `app.run(debug=True)` 启动内置调试服务器(当你修改 py 文件,工程会自动重新加载。)

    在本地 修改 /编写 /调试 好项目之后, 再推送到服务器上去

    推送方式 git / ftp / 手动复制 随便选。

    服务器部署的话,可以用上 docker. 不会的话可以直接用 nginx + flask + gunicorn
    troywinter
    troywinter
    Aug 12, 2016
    8
    在服务器上开发的话,多开几个 ssh session 就行了,这边改代码保存,那边运行,不用这么麻烦的来回切换。
    cxh116
    cxh116
    Aug 12, 2016
    9
    你再只需要一个 tmux 就可以了
    zhuangzhuang1988
    zhuangzhuang1988
    Aug 12, 2016
    10
    服务器上开发
    大哥, 你牛..
    g0thic
    g0thic
    Aug 12, 2016
    11
    大兄弟你是运维出身的吧
    akring
    akring
    Aug 12, 2016
    12
    搭车同问 Scrapy 爬虫如何部署到 VPS 上?
    vinan143
    vinan143
    Aug 12, 2016
    13
    服务器上还用 nano 的都是高手中的高手
    masterzh01
    masterzh01
    Aug 12, 2016
    14
    vim + git
    SlipStupig
    SlipStupig
    Aug 12, 2016
    15
    @akring web hook+corntab
    akring
    akring
    Aug 12, 2016
    16
    @SlipStupig 多谢!
    alittletrain
    alittletrain
    Aug 12, 2016
    17
    pycharm 可以直接在远程服务器上获取 /拉取文件, 你修改后可以自动上传到服务器上,注意(这是非 GIT 的方式),不过好在 pycharm 在本地有历史记录。
    同理 phpstorm
    guyskk
    guyskk
    Aug 12, 2016
    18
    7 楼正解
    likuku
    likuku
    Aug 12, 2016
    19
    nano 。。。第一次登录服务器就是卸载 nano
    ericls
    ericls
    Aug 12, 2016
    20
    第一步 git init
    第二步 vim tests.py
    wbt
    wbt
    Aug 12, 2016
    21
    一般不是在本地开发然后部署到远程么?直接在远程开发不便于调试以及多人协作。
    lavande
    lavande
    OP
    Aug 12, 2016
    22
    多谢大家!等下我来搞个 git ,再搞个 IDE ,不过我之前没说清楚,现在在主贴更新了,就是微信公众平台的开发……特别矛盾,似乎没法在本地搞
    RealLiuSha
    RealLiuSha
    Aug 12, 2016
    23
    首先, 我不管你怎么管理代码

    开发微信? 把域名解析到公网 对的, 微信需要验证域名的所有权, 你解析完后,公网服务器把流量转发到内网你的机器上?

    能理解吗? 代理..

    OK, 这个时候你该整个 sublime 了 它能帮助你比较搞笑的开发, 当然 pycharm 也是个好选择..

    好的. 差不多了.
    Allianzcortex
    Allianzcortex
    Aug 12, 2016
    24
    @akring scp 上传本地文件到远程服务器

    用 pycharm+IDEAvim , yeah!!!
    RealLiuSha
    RealLiuSha
    Aug 12, 2016❤️1
    25
    啪啪打脸了 不是搞笑 是高效>..
    lxy
    lxy
    Aug 12, 2016
    26
    搞个 git 私有仓库,开个 dev 分支,本地开发测试完成一个功能就推送到远程 master 分支。服务器拉取 master 。
    部署 nginx+gunicorn+gevent+virtualenv+supervisor 。
    本地模拟测试的话,有很多测试提交工具,比如 fiddler ,或者直接用 requests 库手写也可以。
    MARCH0
    MARCH0
    Aug 12, 2016
    27
    我用 winscp+sublimetext
    lavande
    lavande
    OP
    Aug 12, 2016
    28
    @lgpqdwjh 对哦!我忘了还可以代理
    ooo000
    ooo000
    Aug 12, 2016
    29
    你在做这个项目吗?[基于 Flask 及爬虫实现微信“讲笑话”机器人]( https://zhuanlan.zhihu.com/p/21921164)
    tagtag
    tagtag
    Aug 12, 2016
    30
    坐着开发,能站得住也行
    Losses
    Losses
    Aug 12, 2016
    31
    又开始折腾了?这次搞的是什么 =w=?
    lavande
    lavande
    OP
    Aug 12, 2016
    32
    @Losses 惊现螺丝!!!
    lavande
    lavande
    OP
    Aug 12, 2016
    33
    @ooo000 并不是,不过你发的这个挺有意思,我来瞧瞧!
    armoni
    armoni
    Aug 12, 2016
    34
    微信公众号有个测试账号的,你可以直接把 IP 映射到你的个人电脑上调试开发
    lavande
    lavande
    OP
    Aug 12, 2016
    35
    @armoni 我现在就是用的测试帐号,不过一开始没多想,觉得自己 IP 一直变,就去绑定了腾讯云。。。。
    nisekoi
    nisekoi
    Aug 12, 2016 via iPhone
    36
    QQ 浏览器有个扩展,配合官方调试工具可以本地开发
    xq5he
    xq5he
    Aug 12, 2016
    37
    你可以试一下 localtunnel https://localtunnel.github.io/www/ 注册一个微信的测试账号,服务器地址填 localtunnel 生成的地址,这样你就可以在本地开发了。
    huijian222
    huijian222
    Aug 12, 2016
    38
    本地开发 然后推送到 CODING 或者 GITHUB 然后 设计 WEBHOOK 然后本地更新完后推送到代码托管平台 服务器自动 GIT PULL 齐活
    flyingnn
    flyingnn
    Aug 12, 2016 via Android
    39
    ssh 到服务器,可以把本地端口映射到远程服务器,让外部访问本地端口
    unifier
    unifier
    Aug 12, 2016
    40
    话说 pycharm 也可以通过 sftp 来直接改线上代码吧
    9hills
    9hills
    Aug 12, 2016
    41
    1.本地编辑,本地测试
    2.debug=True
    limbo0
    limbo0
    Aug 12, 2016
    42
    有个折衷办法, 可以开个 samba 服务 本地 ide 调试
    iyaozhen
    iyaozhen
    Aug 12, 2016 via Android
    43
    还是要本地开发,效率更高。你可以直接打开远程文件或者本地文件和远程同步,方案有很多。不过像公司内的话有跳板机,比较麻烦,一般是 rz 文件上去调试。

    你说你是微信开发,这就需要你首先先把微信 XML 解析的方法调试封装好,然后业务逻辑本地开发、调试然后再线上验证。需要自己代码很好的模块化。实在不行的话也有很多本地模拟微信服务器发包的工具,或者远程服务器的请求转到本地。

    值得欣慰的是楼主能感觉到不对
    zhangkaizhao
    zhangkaizhao
    Aug 13, 2016
    44
    嗨,你真的是在正常开发么?
    请查阅 unittest/mock 先。
    shajiquan
    shajiquan
    Aug 13, 2016
    45
    放弃。。。
    wind3110991
    wind3110991
    Aug 13, 2016
    46
    flask 本地开发测试完,直接扔 docker 里配置 dockerfile ,打包好镜像然后部署到服务器上
    GreatMartial
    GreatMartial
    Aug 13, 2016 via Android
    47
    我用 sae 开发微信,都是在服务器上调试,好麻烦。
    adoal
    adoal
    Aug 14, 2016
    48
    几个思路:
    1. ssh 到服务器上现场开发其实没啥不专业的,但是用 nano 来些 python ……这事恐怕会很难受,建议还是用 vim 或 emacs ,然后好好配置一下,会方便很多的。
    2. 可以 ssh 到服务器,利用 ssh 的 tunnel 做一下端口映射,把服务器上某个端口用 ssh -R 映射到本地电脑来做开发。
    3. 可以用 PyCharm 之类的 IDE ,仍然是在 IDE 理配置 ssh 到服务器,但是 IDE 本机运行,做远程开发。
    4. 印象中微信有在本机做开发的 SDK 啊……
    lavande
    lavande
    OP
    Aug 15, 2016
    49
    @xq5he 这个服务看起来好棒,多谢
    lidalve
    lidalve
    Apr 6, 2017
    50
    pycharm 企业版有 deployment 功能,直接本地开发上传文件的,研究下就 OK 了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1989 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 165ms · UTC 15:20 · PVG 23:20 · LAX 07:20 · JFK 10:20
    ♥ Do have faith in what you're doing.