这是一个interface上通过脚本扩展短链接第三方登录的例子,这个类可以看成是一个poller,每一个登陆请求可以创建一个这样的poller,也可以在外部设计一个回收池来回收。完全看你自己想要怎么管理。 初始化以后使用start方法来连接并通过socket模拟http发送消息,发送完毕之后会等待接受返回。示例中通过解析json串来得到返回信息,用户可以根据自己的需要修改成其他的方式。 这个示例中通过使用向底层注册fd的方式实现了异步发送和异步接收。 可能的问题:该示例中connet这一步依然是阻塞的,在极限情况下可能存在性能问题。 |
# -*- coding: utf-8 -*-
import KBEngine
import Functor
import socket
from KBEDebug import *
import json
class LoginPoller:
def __init__(self, _callback, _host, _page, _port, _overtime = 5):
"""
@param _callback: 数据处理完毕之后调用的外部回调, 注意不可在外部回调中销毁这个LoginPoller自己
@param _host: 主机地址, 可以是域名也可以是ip地址
@param _page: 请求页面
@param _port: 请求端口
@param _overtime: 超时秒数
"""
self._socket = None
self._request_str = ""
self._recv_str = ""