小编dbr*_*dbr的帖子

如何实施基本的"长轮询"?

我可以找到很多关于Long Polling如何工作的信息(例如,这个这个),但没有关于如何在代码中实现它的简单示例.

我所能找到的只是依赖于Dojo JS框架的cometd,以及一个相当复杂的服务器系统.

基本上,我将如何使用Apache来处理请求,以及如何编写一个简单的脚本(例如,在PHP中),它将"长时间轮询"服务器以获取新消息?

该示例不必是可扩展的,安全的或完整的,它只需要工作!

php comet http

766
推荐指数
12
解决办法
28万
查看次数

使用Python获取文件的最后n行,类似于tail

我正在为Web应用程序编写一个日志文件查看器,为此我想通过日志文件的行分页.文件中的项目是基于行的,底部是最新项目.

所以我需要一种tail()方法,可以n从底部读取行并支持偏移量.我想出的是这样的:

def tail(f, n, offset=0):
    """Reads a n lines from f with an offset of offset lines."""
    avg_line_length = 74
    to_read = n + offset
    while 1:
        try:
            f.seek(-(avg_line_length * to_read), 2)
        except IOError:
            # woops.  apparently file is smaller than what we want
            # to step back, go to the beginning instead
            f.seek(0)
        pos = f.tell()
        lines = f.read().splitlines()
        if len(lines) >= to_read or pos == 0:
            return lines[-to_read:offset and -offset or None]
        avg_line_length …
Run Code Online (Sandbox Code Playgroud)

python file-io file tail logfiles

174
推荐指数
10
解决办法
14万
查看次数

164
推荐指数
11
解决办法
27万
查看次数

Ruby相当于virtualenv?

是否有类似于Python实用程序virtualenv的东西

基本上它允许您将Python包安装到沙盒环境中,所以 easy_install django不会进入系统范围的site-packages目录,它将进入virtualenv创建的目录.

例如:

$ virtualenv test
New python executable in test/bin/python
Installing setuptools...cd .........done.
$ cd test/
$ source bin/activate
(test)$ easy_install tvnamer
Searching for tvnamer
Best match: tvnamer 0.5.1
Processing tvnamer-0.5.1-py2.5.egg
Adding tvnamer 0.5.1 to easy-install.pth file
Installing tvnamer script to /Users/dbr/test/bin

Using /Library/Python/2.5/site-packages/tvnamer-0.5.1-py2.5.egg
Processing dependencies for tvnamer
Finished processing dependencies for tvnamer
(test)$ which tvnamer 
/Users/dbr/test/bin/tvnamer
Run Code Online (Sandbox Code Playgroud)

RubyGems有这样的东西吗?

ruby python virtualenv

157
推荐指数
6
解决办法
5万
查看次数

你能为Python的语法添加新的语句吗?

你可以添加新的语句(例如print,raise,with)Python的语法?

说,允许..

mystatement "Something"
Run Code Online (Sandbox Code Playgroud)

要么,

new_if True:
    print "example"
Run Code Online (Sandbox Code Playgroud)

如果你应该,而不是如果它是可能的(没有修改python解释器代码)

python syntax language-specifications

118
推荐指数
6
解决办法
2万
查看次数

Python的"漂亮"持续集成

这是一个有点虚荣的问题,但BuildBot的输出并不是特别好看.

例如,与...相比

..和其他人,BuildBot看起来相当......古老

我目前正在玩Hudson,但它是以Java为中心的(虽然在本指南中,我发现它比BuildBot更容易设置,并产生了更多信息)

基本上:有没有针对python的持续集成系统,它会产生大量闪亮的图形等等?


更新:从那时起,Jenkins项目取代了Hudson作为该软件包的社区版本.原作者也转到了这个项目.Jenkins现在是Ubuntu/Debian,RedHat/Fedora/CentOS等标准软件包.以下更新仍然基本正确.与詹金斯一起做这件事的出发点是不同的.

更新:在尝试了一些替代方案之后,我想我会坚持使用哈德森.诚信很好,很简单,但非常有限.我认为 Buildbot更适合拥有众多构建从服务器,而不是像我使用它一样在一台机器上运行.

为Hudson设置Python项目非常简单:

  • http://hudson-ci.org/下载Hudson
  • 运行它 java -jar hudson.war
  • 在默认地址上打开Web界面 http://localhost:8080
  • 转到Manage Hudson,Plugins,单击"更新"或类似内容
  • 安装Git插件(我必须git在Hudson全局首选项中设置路径)
  • 创建新项目,输入存储库,SCM轮询间隔等
  • 安装nosetests通过,easy_install如果它还没有
  • 在构建步骤中,添加 nosetests --with-xunit --verbose
  • 选中"发布JUnit测试结果报告"并将"测试报告XML"设置为 **/nosetests.xml

这就是所需要的.您可以设置电子邮件通知,插件值得一看.我目前正在使用的一些Python项目:

  • SLOCCount插件计算代码行(并绘制图表!) - 您需要单独安装sloccount
  • 用于解析PyLint输出的违规(您可以设置警告阈值,绘制每个构建的违规数量)
  • Cobertura可以解析coverage.py输出.使用时,Nosetest可以在运行测试时收集覆盖率nosetests --with-coverage(这会将输出写入**/coverage.xml)

python continuous-integration buildbot jenkins

116
推荐指数
6
解决办法
3万
查看次数

setTimeout如何在Node.JS中工作?

我想一旦它被执行了它就在队列中,但在队列中是否有任何保证它会在X毫秒后完全调用?或者队列中其他较重的任务会延迟吗?

javascript serverside-javascript node.js

107
推荐指数
5
解决办法
20万
查看次数

你如何组织多个git存储库,以便所有这些存储库一起备份?

使用SVN,我有一个大的存储库,我保存在服务器上,并在几台机器上签出.这是一个非常好的备份系统,让我可以轻松地在任何机器上工作.我可以签出一个特定的项目,提交并更新"主"项目,或者我可以检查整个事情.

现在,我有一堆git存储库,用于各种项目,其中一些是在github上.我也有我提到的SVN存储库,通过git-svn命令导入..

基本上,我喜欢把我所有的代码(不仅仅是项目,而是随机的片段和脚本,像我的简历,我写过的文章,我制作的网站等等)放在一个大的存储库中,我可以很容易地克隆到远程机器,或记忆棒/硬盘作为备份.

问题是,因为它是一个私有存储库,并且git不允许检出特定文件夹(我可以将其作为一个单独的项目推送到github,但是更改会出现在master-repo和sub-回购)

可以使用git子模块系统,但它并不是我想要的行为(子模块是指向其他存储库的指针,并不真正包含实际代码,所以它对备份没用)

目前我有一个git-repos的文件夹(例如,〜/ code_projects/proj1/.git /〜/ code_projects/proj2/.git /),在对proj1进行更改之后git push github,我将文件复制到〜/ Documents/code/python/projects/proj1 /并做一次提交(而不是单个repos中的众多提交).然后做git push backupdrive1,git push mymemorystick

所以,问题是:你的个人代码和项目如何使用git存储库,并保持同步和备份?

git backup

98
推荐指数
2
解决办法
5万
查看次数

你能列出一个函数收到的关键字参数吗?

我有一个字典,我需要传递键/值作为关键字参数..例如..

d_args = {'kw1': 'value1', 'kw2': 'value2'}
example(**d_args)
Run Code Online (Sandbox Code Playgroud)

这样可以正常工作,但是如果d_args dict中的值没有被example函数接受,它显然会死掉..比如说,如果示例函数定义为def example(kw2):

这是一个问题,因为我不控制生成d_argsexample函数..它们都来自外部模块,example只接受来自dict的一些关键字参数.

理想情况下我会这样做

parsed_kwargs = feedparser.parse(the_url)
valid_kwargs = get_valid_kwargs(parsed_kwargs, valid_for = PyRSS2Gen.RSS2)
PyRSS2Gen.RSS2(**valid_kwargs)
Run Code Online (Sandbox Code Playgroud)

我可能只是从有效的关键字参数列表中过滤掉dict,但我想知道:有没有办法以编程方式列出特定函数所需的关键字参数?

python arguments introspection

98
推荐指数
4
解决办法
5万
查看次数

Python多次显示字符串

我想打印一个像' - '多次的字符或字符串.

我可以不使用循环吗?..有没有像这样的功能

print('-',3)
Run Code Online (Sandbox Code Playgroud)

..这意味着打印-3次,如下所示:

---
Run Code Online (Sandbox Code Playgroud)

python

77
推荐指数
2
解决办法
11万
查看次数