你们用python做web开发时会遇到那些深坑,pythoner们畅所欲言,讨论一下啊 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
justfly
V2EX    Python

你们用python做web开发时会遇到那些深坑,pythoner们畅所欲言,讨论一下啊

  •  
  •   justfly 2013-06-21 14:03:51 +08:00 7138 次点击
    这是一个创建于 4565 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如题,大家讨论在python web开发过程中遇到那些深坑,让你头痛不止又豁然开朗的!

    不用python的也可以分享一下自己开发中的被坑的辛酸史
    46 条回复    1970-01-01 08:00:00 +08:00
    helone
        1
    helone  
       2013-06-21 14:08:11 +08:00
    配置环境....
    germ
        2
    germ  
       2013-06-21 14:08:57 +08:00
    全局变量,这个经常会遇到!
    ry_wang
        3
    ry_wang  
       2013-06-21 15:36:56 +08:00
    UI永远是WEB的毒瘤。。。
    ma6174
        4
    ma6174  
       2013-06-21 15:37:54 +08:00
    编码问题
    div id="r_665753" class="cell">
    glasslion
        5
    glasslion  
       2013-06-21 16:00:32 +08:00
    还在用Python2.5
    loading
        6
    loading  
       2013-06-21 16:04:45 +08:00 via iPhone
    编码 +65536
    iscraft
        7
    iscraft  
       2013-06-21 16:34:39 +08:00
    编码 BOM 尼玛
    yakczh
        8
    yakczh  
       2013-06-21 16:44:06 +08:00
    编码
    ufo22940268
        9
    ufo22940268  
       2013-06-21 18:43:28 +08:00
    菜鸟表示import冲突的问题让我很困扰
    okidogi
        10
    okidogi  
       2013-06-21 18:52:10 +08:00
    有一次启动 django 出现了 cannot import indexes 的错误。indexes是haystack的一个模块,一般这种情况是哪儿的import出现了循环引用。debug了半天,结果发现是因为没有设定文件编码而代码出现了中文字符导致的 (#-*-coding:utf-8 -*-)。

    但是坑爹的是,一般没有设定文件编码出现中文字符django会报另外的错误的。当时杀掉django的心都有了,说多了都是泪阿。
    est
        11
    est  
       2013-06-21 19:01:12 +08:00
    wsgi 不能异步。
    ushuz
        12
    ushuz  
       2013-06-21 20:21:57 +08:00
    编码+10086
    C0VN
        13
    C0VN  
       2013-06-21 23:22:09 +08:00
    字符编码,头大!!!
    likoshow
        14
    likoshow  
       2013-06-21 23:25:51 +08:00
    被时区坑过
    shachuan
        15
    shachuan  
       2013-06-22 00:00:17 +08:00
    珍爱生命 远离win~

    重启后就没了的问题这算个what啊
    ayang23
        16
    ayang23  
       2013-06-22 00:09:13 +08:00
    from __future__ import division 引发的整数相除得出浮点数的结果差点没把折腾死
    caoyue
        17
    caoyue  
       2013-06-22 01:09:42 +08:00
    字符编码
    以及各种时间转换
    greatghoul
        18
    greatghoul  
       2013-06-22 01:14:59 +08:00
    各种包因为墙的关系安装不上。
    jjx
        19
    jjx  
       2013-06-22 08:38:20 +08:00
    n年前,做一个内网django项目, 没有关闭debug

    结果几个后内存占用过大当机,百般调试后, 无解,最终查看代码原来django debug模式把执行过的sql语句都写到一个querties的列表中去的(现在去看了一下,还是如此). n天运行下来后,这个querites列表内存占用太大。
    da_a
        20
    da_a  
       2013-06-22 09:41:54 +08:00
    真是编码啊 很头疼 肉眼分辨不出来 只能试错
    0bit
        21
    0bit  
       2013-06-22 10:15:52 +08:00
    @ayang23 既然引入这个了,不就是想要浮点数的结果吗?
    0bit
        22
    0bit  
       2013-06-22 10:18:13 +08:00
    公司内部隔离网段,安装充满了各种依赖的类库,绝对是最蛋疼的事情,没有之一。

    考虑自己布一个PYPI
    raptor
        23
    raptor  
       2013-06-22 11:22:22 +08:00
    编码是个常见的坑,很多年前我曾经在cherrypy里碰到过,最后还是改了cherrypy的源码解决的……
    全局变量也是个风险很大的坑,我曾经用这个来存在用户登录信息,结果用户登录窜了……还好发现得及时……现在再也不敢用了,必须session伺候。
    时区也是坑,不过是小事了,服务器时间不准才头疼。
    至于windows……嘿嘿,珍爱生命,远离windows。

    @0bit virtualenv或virtualenvwrapper
    muxi
        24
    muxi  
       2013-06-22 11:34:56 +08:00
    配置环境和包管理
    python社区的各种包实在是混乱,每次安装我都忍不住喷一遍
    yemoluo
        25
    yemoluo  
       2013-06-22 12:00:36 +08:00
    我前天在aliyun上装pylibmc,各种问题,装了2个小时才修好
    y0
        26
    y0  
       2013-06-22 12:16:39 +08:00
    我想在 linux 上装 gmpy 装不动,很郁闷,老说缺各种 library, 还说找不到 Python.h
    zyAndroid
        27
    zyAndroid  
       2013-06-22 12:49:52 +08:00   1
    @y0 没装python-dev吧,

    apt-get install pythin-dev
    zyAndroid
        28
    zyAndroid  
       2013-06-22 12:51:02 +08:00
    @greatghoul 用proxychain可以解决这个问题
    humiaozuzu
        29
    humiaozuzu  
       2013-06-22 13:01:25 +08:00
    - 编码问题
    - pypi 上很多包是要到 sourceforge 上面下载,然后 sf 间歇性被墙
    - 有时偷懒不用 virtualenv 某些包换新版本后各种问题折腾
    - gevent
    sillyousu
        30
    sillyousu  
       2013-06-22 13:06:14 +08:00
    装PIL的时候遇到过依赖的库路径不对,需要做软链或者改手工指定正确的路径。
    y0
        31
    y0  
       2013-06-22 14:17:36 +08:00
    @zyAndroid

    python-dev is already the newest version.
    python-dev set to manually installed.

    这算是装了还是没装啊。需要手动装? 在哪里 make install 吗?
    y0
        32
    y0  
       2013-06-22 14:28:29 +08:00
    @zyAndroid 搞定了,感谢。
    no13bus
        33
    no13bus  
       2013-06-22 14:47:54 +08:00
    @raptor 遇到了相同的问题,cherrypy一些中文显示只能改源码
    oldcai
        34
    oldcai  
    PRO
       2013-06-22 14:50:58 +08:00
    比起C++,楼上这些都不是个事。

    不过我感觉算的上坑的,就是多线程因为GIL还是只能用单核这也不算什么但是为什么每个线程还是要10M的堆栈呢,内存开销巨大!(当然,也有办法缓解(ulimit(但是分太小了程序会崩溃(坑))))

    好吧,好不容易有了个stackless python吧,兼容官方C python吧,官方还不合并。
    raptor
        35
    raptor  
       2013-06-22 15:30:53 +08:00
    @no13bus 所以我放弃cherrypy很多年……
    jokaye
        36
    jokaye  
       2013-06-23 23:33:01 +08:00
    编码, 单元测试
    mengzhuo
        37
    mengzhuo  
       2013-06-26 11:12:21 +08:00
    @jjx 就算是debug不也是把SQL语句输出到log里面吗
    mengzhuo
        38
    mengzhuo  
       2013-06-26 11:14:08 +08:00
    @greatghoul 可以把pip源设到清华的
    bigzhu
        40
    bigzhu  
       2013-06-27 13:38:01 +08:00
    import 包的时候,自己的代码写的多了需要分包的时候,还是很蛋疼的.没法用比较好的相对路径引用.
    VYSE
        41
    VYSE  
       2013-06-27 14:06:07 +08:00
    12颗至强请求过多还是只能会满载,即使用了GEVENT+GUNICORN+NGINX,实在受不了CPYTHON的效率
    table cellpadding="0" cellspacing="0" border="0" width="100%"> zhwei
        43
    zhwei  
       2013-06-27 14:23:03 +08:00 via Android
    编码 + 1
    漫长的包。。(自己在校内弄了个pypi后好多了)
    Python版本问题算不算
    jjx
        44
    jjx  
       2013-06-28 10:13:38 +08:00
    @mengzhuo

    我们说的是一回事吗? 这里输出到日志同我讲的事情没有关系, 我的意思是django在debug模式下会将sql 语句写到一个列表,如果你的程序类型是监控式的,有密集的sql查询,在django中另起一个线程或进程在跑,则在几天内会耗尽你的内存
    mengzhuo
        45
    mengzhuo  
       2013-06-28 10:24:09 +08:00
    @jjx

    debug模式下尽量收集最大信息不正是程序应该做的吗?
    所以忘记关闭debug模式导致宕机不算作楼主所说的“坑”,应该是人为失误。
    Livid
        46
    Livid  
    MOD
    PRO
       2013-06-30 01:31:57 +08:00
    各类教程只能教你最基本的 CRUD,但是实际项目中对安全和性能的需求,需要自己积累经验。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2187 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 55ms UTC 16:08 PVG 00:08 LAX 08:08 JFK 11:08
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86