Tag: python

运行django时,扭曲的服务器意外崩溃

我正在使用本网站上的django-on-twisted脚本来运行一个django应用程序。 所有请求都由一个nginx服务器提供服务,该服务器将相关请求反向代理为扭曲。 我有一个API的API设置,基本上只是接收请求,并在发送响应之前对get参数进行一些处理。 但是,当一个特定的客户端正在打api时,扭曲的服务器就会closures。 下面粘贴的是Nginx的日志: the.ip.of.client – – [21/Apr/2012:11:30:36 -0400] "GET /api/url/?get=params&more=params HTTP/1.1" 499 0 "-" "Java/1.6.0_24" 扭曲的日志显示什么,但在这一点上扭曲停止工作。 通过错误代码499,我假设客户端意外closures连接,这是我没有问题。 客户是否收到回复对我来说并不重要。 这里是相关的Django视图: def api_url(request): if request.GET: get_param = request.GET.get('get', [''])[0] more_param = request.GET.get('more', [''])[0] #some processing here based on the get params return HttpResponse('OK') else: raise Http404 来自客户的请求是有效的请求,不会以不利的方式影响处理。 我已经从shell中testing了它。 当我在django开发服务器上尝试时,它也以同样的方式崩溃,没有留下任何接收请求的痕迹。 从浏览器进行testing时,一切正常。 此外,扭曲的服务器适用于所有常规使用情况。 这是我第一次面临一个问题。 任何帮助或指针将不胜感激。

Django和VirtualEnv开发/部署最佳实践

只是好奇人们如何配合他们的Django项目结合virtualenv 更具体地说,你如何保持你的生产virtualenv与你的开发机器正确同步? 我使用git for scm,但是我没有在git repo中使用virtualenv,或者最好是使用pip freeze,然后使用冻结输出在服务器上重新创build环境? (如果你这样做,你能否描述一下这些步骤 – 我在解冻过程中找不到很好的文档 – 就像pip install -r freeze_output.txt吗?)

我的系统上有太多不同的Python版本,导致问题

在过去的几年中,我已经安装了许多Python版本的Python库。 为了让他们立即工作,我盲目地安装了他们,没有控制。 目前,当我尝试安装调用numpy,scipy和matplotlib的pynest时,它们导致问题。 挣扎之后,我将清理并重新安装Python和库。 经过调查,我发现Python 2.5 / 2.6 / 2.7 / 3.2在我的系统上,他们每个都有一些副本或其他东西:(我的操作系统== Mac OS X 10.7.5狮子 ) /Library/Frameworks/ /opt/local/Library/Frameworks/ /opt/local/bin/ /Applications/ /usr/local/bin/ /usr/bin/ /System/Library/Frameworks/ 我知道我疯了,有这些。 现在我删除了/System/Libarary/Frameworks (我从来没有从/System/Library/删除任何东西)。 在干净的工作之后, which python现在提供链接到/System/Library/Frameworks /usr/bin/python 。 现在,我重新安装Python是否是一个清晰的环境? 如何仔细检查,没有其他版本存在? 我应该如何重新安装,以确保他们和他们的图书馆不会到处都有,并且还有很多副本? 我想将一个干净的Python 2.7安装到一个合适的位置,并让我的系统确切地知道它在哪里,而不是在其他地方安装任何库。 请给我一些build议,如何以专业的方式来pipe理它。 为了您的信息,这里是我目前的$PATH ,我认为它应该被修改: /opt/local/bin:/opt/local/sbin:/opt/nest/lib/python2.7/site-packages:/usr/local/lib/python2.7/site-packages:/Library/Frameworks/Python.framework/Versions/2.7/bin:/usr/texbin:/Library/Frameworks/Python.framework/Versions/3.2/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/texbin:/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/site-packages/django/bin:/usr/X11/bin:/opt/local/bin:/opt/local/sbin:/usr/local/lib/python2.7/site-packages:/Library/Frameworks/Python.framework/Versions/2.7/bin:/Library/Frameworks/Python.framework/Versions/3.2/bin 请让我知道如果你需要更多的信息。 谢谢! 更新 : 为什么我变得这么疯狂呢? 我相信这是因为我通过以下方式安装了东西: easy_install / macports / homebrew / fink / […]

使用Python将PDF转换为一系列图像

我正在尝试使用Python将多页PDF转换为一系列的JPEG。 我可以使用可用工具轻松地将PDF分成单独的页面,但是我一直无法find任何可以将PDF转换为图像的东西。 PIL不起作用,因为它不能读取PDF文件。 我发现的两个选项是通过shell使用GhostScript或ImageMagick。 这对我来说不是一个可行的select,因为这个程序需要跨平台的,我不能确定这些程序中的哪一个程序将在它将被安装和使用的机器上可用。 有没有可以做到这一点的Python库?

真实世界的错字统计?

我在哪里可以find一些现实世界的错字统计? 我试图将人们的input文本与内部对象相匹配,而且人们往往会犯拼写错误。 有两种错误: typos – “Helllo”,而不是“星期六”,而不是“你好”/“Satudray”等。 Spelling – “芝加哥”而不是“芝加哥” 我使用Damerau-Levenshtein距离作为拼写错误( 双倍的Metaphone拼写)(Python实现在这里和这里 )。 我想关注Damerau-Levenshtein(或简单的edit-distance )。 教科书的实现总是使用“1”来表示删除,插入replace和换位的权重。 虽然这很简单并且考虑到很好的algorithm,但它不符合“现实”/“真实世界的概率”。 例子: 我确定“Helllo”(“Hello”)的可能性大于“Helzlo”,但它们都距离编辑距离。 在QWERTY键盘上,“Gello”比“Qello”更接近“Hello”。 Unicode音译:“慕尼黑”和“慕尼黑”之间的“真实”距离是多less? “现实世界”权重应该是删除,插入,replace和换位? 即使Norvig非常酷的拼写纠正器使用非加权编辑距离。 顺便说一句,我敢肯定,重量需要是function,而不是简单的浮动(按照上面的例子)… 我可以调整algorithm,但是我可以在哪里“学习”这些权重? 我无法访问Google规模的数据 … 我应该猜他们吗? 编辑 – 试图回答用户的问题: 由于上述原因,我目前的非加权algorithm在遇到错字时经常失败。 “星期四回归”:每个“真实的人”都可以很容易地告诉周四比周二更有可能,但它们都是一个编辑距离! (是的,我做logging和衡量我的performance)。 我正在开发一个NLP旅游search引擎,所以我的字典包含25K目的地(预计将增长到100K),时间expression〜200(预期1K),人物expression〜100(预计300),货币expression〜100(预期500 ),“胶合逻辑词”(“from”,“beautiful”,“apartment”)〜2K(预计10K)等等… 编辑距离的使用对于每个上述单词组是不同的。 我试图“明显的时候自动校正”,例如,距离字典中的另外一个单词只有1个编辑距离。 我还有许多其他的手工调整的规则,例如,距离长度大于4的字典单词距离不超过2个编辑距离的双倍音位修正…当我从现实世界的input中学习时,规则列表不断增加。 “有多less对词典在你的门槛内?”:那么,这取决于“花哨的权重系统”和现实世界(未来)的input,不是吗? 无论如何,我有广泛的unit testing,以便我对系统做出的每一个改变只会使它变得更好(当然基于过去的input)。 大多数小于6个字母的单词距离距离另一个字典条目1个编辑距离的单词的编辑距离在1个编辑距离内。 今天当有两个字典条目与input距离相同时,我尝试应用各种统计数据来更好地猜测用户的意思(例如,法国巴黎更有可能出现在我的search中,而不是伊朗的帕里兹)。 select一个错误的单词的成本是向最终用户返回半随机(通常是荒谬的)结果,并可能失去一个客户。 不理解的代价稍微便宜一些:用户会被要求重新修改。 复杂性的代价是否值得呢? 是的,我确定它是。 你不会相信大量的错别字的人扔在系统,并期望它的理解,我可以肯定使用精确度和召回提高。

读取文件数据而不保存在Flask中

我正在写我的第一个烧瓶应用程序。 我正在处理file upload,基本上我想要的是读取上传的文件的数据/内容而不保存,然后打印在结果页面上。 是的,我假设用户总是上传文本文件。 这里是我正在使用的简单的上传function: @app.route('/upload/', methods=['GET', 'POST']) def upload(): if request.method == 'POST': file = request.files['file'] if file: filename = secure_filename(file.filename) file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename)) a = 'file uploaded' return render_template('upload.html', data = a) 现在,我正在保存文件,但是我需要的是包含文件内容/数据的“一个”variables。任何想法?

最好的Python播客?

任何人都可以提出有关Python的好播客吗?可以是任何有关Python或其生态系统的东西(比如django,pylons等)。

芹菜任务,运行更多的任务

我正在使用celerybeat来启动一系列辅助任务的主要任务。 我已经完成了两项任务。 有没有办法轻松做到这一点? Celery是否允许从任务内运行任务? 我的例子: @task def compute(users=None): if users is None: users = User.objects.all() tasks = [] for user in users: tasks.append(compute_for_user.subtask((user.id,))) job = TaskSet(tasks) job.apply_async() # raises a IOError: Socket closed @task def compute_for_user(user_id): #do some stuff compute从celerybeat调用,但是当它尝试运行apply_async时会导致IOError。 有任何想法吗?

如何推出我自己的pypi?

我想运行我自己的内部pypi服务器,在我的组织内分发蛋。 我find了几个项目,比如: http://pypi.python.org/pypi/EggBasket/ http://plone.org/products/plonesoftwarecenter 据我了解,pypi.python.org使用称为奶酪店的软件。 我的问题: 为什么我不能使用奶酪店? (我找不到它,不知道它是否存在) 别人怎么解决这个问题呢? (目前我们用腮红 svn分发鸡蛋) *编辑:这似乎canonical http://wiki.python.org/moin/PyPiImplementations 。 不过,我对反馈感兴趣。

在Jupyter / iPython中dynamic更新图表的最新方法是什么?

在如何dynamic更新ipython笔记本(在一个单元格内)循环中绘图的答案中,给出了一个示例,说明如何在Python循环内dynamic更新Jupyter笔记本内的绘图。 然而,这种方法通过在每次迭代中破坏并重新创build情节起作用,并且在其中一个线索中的评论指出,可以通过使用新的ish %matplotlib nbagg magic来改善这种情况,其提供embedded在笔记本,而不是一个静态的图像。 然而,就我所知,这个奇妙的新的nbaggfunction似乎完全没有logging,而且我无法find如何使用它来dynamic更新情节的例子。 因此我的问题是, 如何使用nbagg后端有效地更新Jupyter / Python笔记本中的现有绘图? 由于dynamic更新matplotlib中的图是一个棘手的问题,一个简单的工作示例将是一个巨大的帮助。 任何关于这个主题的文档的指针也是非常有帮助的。 为了清楚我所要求的:我想要做的是运行一些模拟代码进行一些迭代,然后绘制一个当前状态的图,然后运行它几次迭代,然后更新图以反映当前状态,等等。 所以这个想法是绘制一个情节,然后在没有任何用户的交互的情况下更新情节中的数据而不破坏和重新创build整个事情。 下面是上面链接问题的答案略有修改的代码,通过每次重新绘制整个数字来实现这一点。 我想达到相同的结果,但更有效地使用nbagg 。 %matplotlib inline import time import pylab as pl from IPython import display for i in range(10): pl.clf() pl.plot(pl.randn(100)) display.display(pl.gcf()) display.clear_output(wait=True) time.sleep(1.0)