[英]How to abstract from pycurl the correct way
我想编写一个伪模块,让一个人继续执行GET请求(非常类似于使用Twitter Streamming API的那个),但每次有人想要调用函数时都不必提供所有参数发出相同的GET请求。
在我的module.py中
class viewResults():
def __init__(self,username,password,keyname,consume):
self.buffer = ""
self.consume = consume
self.conn = pycurl.Curl()
self.conn.setopt(pycurl.USERPWD, "%s:%s" % (username, password))
self.conn.setopt(pycurl.URL, "http://crowdprocess.no.de/"+keyname+"/results")
self.conn.setopt(pycurl.WRITEFUNCTION, self.on_receive)
# self.conn.setopt(pycurl.VERBOSE, 1)
# self.conn.setopt(pycurl.DEBUGFUNCTION, self.debug)
self.conn.perform()
# def debug(self,debug_type,debug_message):
# print 'type: '+str(debug_type)+' message'+str(debug_message)
def on_receive(self, data):
self.buffer += data
if data.endswith("\r\n") and self.buffer.strip():
content = json.loads(self.buffer)
self.consume(content)
self.buffer = ""
在index.py上我有
from module import viewResults
def consume(content):
print content
viewResults('username','password','keyname',consume)
所以我只想传递参数username,password,keyname和“consume”函数,当缓冲区充满有效的JSON数据时应该调用它们...
发生的事情是请求实际发生,如果VERBOSE打开,我可以看到所有数据到达,但“更高级别消耗”功能得到什么......
我怎样才能做到这一点? 谢谢。
据我所知,你想归档调试数据?
创建自定义调试函数以存储数据: custom_debug(debug_type,debug_msg)
>>> import human_curl as hurl
>>> import json
>>> r = hurl.get("http://crowdprocess.no.de/"+keyname+"/results"",
... debug=custom_debug, auth=('username', 'password'),)
>>> consume(json.loads(r.content))
我在你的帖子代码中看不到on_receive(self,data):打印一些东西。
添加到sys.stderr.write(“%s \\ n”%data)
def on_receive(self, data):
# -- print data to stderr --
import sys
sys.stderr.write("%s\n" % data)
# -- end --
self.buffer += data
if data.endswith("\r\n") and self.buffer.strip():
content = json.loads(self.buffer)
self.consume(content)
self.buffer = ""
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.