我想编写一个伪模块,它可以让一个 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)
所以我只想传递参数用户名、密码、键名和当缓冲区充满有效 JSON 数据时应该调用的“消费”函数......
发生的事情是请求实际上是发出的,如果 VERBOSE 开启,我可以看到所有数据到达,但是“更高级别的消耗”函数什么都没有......
我怎样才能做到这一点?谢谢。