我有一个长期运行的 Twitter 抓取脚本,偶尔会挂起,堆栈跟踪以
"/usr/lib/python2.7/ssl.py", line 305: self._sslobj.do_handshake()
Run Code Online (Sandbox Code Playgroud)
我的问题是“为什么?” 和“我能做些什么来解决它?”。
在这种情况发生之前,它通常会持续一周左右。最后一次,处理tweepy挂起的 4 个线程中的 3 个(第四个正在等待来自挂起线程的信息)。奇怪的是,线程挂起之间有相当长的延迟:首先,线程调用api.followers_ids()挂起,然后大约 12 分钟后线程调用api.friends_ids()挂起,然后 1 小时 12 分钟后(!)线程调用api.search()挂起。在所有这些之间有许多 api 调用。
我在那里有一些代码可以在我发送QUIT信号时转储它的堆栈跟踪,并且我得到了类似以下内容的挂起线程。它们与(包括)第二个条目(tweepy/binder.py, line 185, in _call部分)完全相同。另外两个从tweepy/cursor.py, line 85 in next和到达那里tweepy/cursor.py, line 60, in next:
File "myTwitterScrapingScript.py", line 245, in checkStatus
status = api.rate_limit_status()
File "/scratch/bin/python-virtual-environments/tweepy-2/local/lib/python2.7/site-packages/tweepy/binder.py", line 185, in _call
return method.execute()
File "/scratch/bin/python-virtual-environments/tweepy-2/local/lib/python2.7/site-packages/tweepy/binder.py", line 146, in execute
conn.request(self.method, url, headers=self.headers, body=self.post_data)
File "/usr/lib/python2.7/httplib.py", …Run Code Online (Sandbox Code Playgroud) 我可以执行需要在 ipython 和/或 ipython notebook 中输入的 shell 命令吗?
当我执行这样的命令时,我看到它是提示符,但没有明显的方法可以从我的键盘输入。
一个例子可能是rsync对远程服务器的命令(因此需要密码)。毫无疑问,这里存在安全方面的危险 - 在我的情况下,这些在我运行时有所减少localhost。
我经常很想在狭窄的环境中导入需要的模块。例如在利用模块的功能体中。在这种情况下,import语句可能会执行多次。
除了样式问题之外,这样做的性能成本是多少?
有没有办法在SublimeText3中选择当前光标位置和下一个/上一个书签之间的文本?
与shift键的组合不起作用:shiftF2转到上一个书签(即shift+ F2="转到下一个书签").shift选择"下一个书签"菜单项时按住也不起作用.
我的Ubuntu 12.04股票python安装有2个程序,用于将代码转换为Python 3.x:2to3-2.7和2to3-3.1.有什么不同?
我在我的mac上下载并安装了jdk7,并希望找到它的实际内容,以便我可以在eclipse中安装它./ System/Library/Java中没有与jdk 7相关的内容.
我想调查某列为空的行.我将根据其他列中的值填充这些单元格,但我想确定哪些尚未完成.
如果我对该列进行过滤,那么在我输入内容之前它不会做任何事情 - 但我正在寻找的东西是什么......
我尝试了一些regexs一样^$,^\s*$和^.{0}$,但没有行是选择对任何这些过滤器.
我注意到,如果我管道循环的输出,bash for循环中的变量范围似乎会改变.
例如,g循环后此处仍保持更改:
$ g=bing; for f in foo; do g=fing; echo g in loop: $g; done; echo g after $g;
g in loop: fing
g after fing
Run Code Online (Sandbox Code Playgroud)
而在这里,循环中的变化被遗忘:
$ g=bing; for f in foo; do g=fing; echo g in loop: $g; done | cat; echo g after $g;
g in loop: fing
g after bing
Run Code Online (Sandbox Code Playgroud)
g管道接收器中的值也来自"外部"上下文:
$ g=bing; for f in foo; do g=fing; echo g in loop: $g; done | (cat; echo in pipe $g;); …Run Code Online (Sandbox Code Playgroud) 如果运行py4j的JVM正在侦听所选的(可能是默认的)套接字,那么测试(在python脚本中)的好方法是什么?有点聪明ping吗?
我可以尝试从我的Java类访问方法或对象并捕获生成的socket.error异常,但这似乎有点像黑客.
创建一个JavaGateway没有任何JVM可以与之通信的python 实例不会引发异常.我可能错过了一些东西,但我没有在文档中找到任何内容.
当我用pyplot绘制图时,它会自动生成漂亮的宽刻度标记和标签。有没有简单的方法可以调整自动生成的标记之间的间距?例如,在默认刻度位置为的图中[2,4,6],在position处有刻度[2,3,4,5,6]。
我知道我可以使用xticks()和设置标记位置和标签yticks(),但是我需要首先知道值的范围,对于不同的数据,我需要手动调整它们。
python ×6
matplotlib ×2
bash ×1
eclipse ×1
filter ×1
histogram ×1
import ×1
ipython ×1
java ×1
java-7 ×1
loops ×1
macos ×1
openrefine ×1
pipe ×1
plot ×1
py4j ×1
python-2.7 ×1
python-2to3 ×1
python-3.x ×1
scope ×1
shell ×1
ssl ×1
sublimetext ×1
sublimetext3 ×1
tweepy ×1
ubuntu ×1
ubuntu-12.04 ×1