コード例 #1
0
ファイル: dytt.py プロジェクト: gszmj/crawlerWeb
    def download_page(self, item):
        """
        获取下一页的网页地址等
        根据当前状态标记新的状态
        0:初始页面
        1:全局列表页面
        2: 抽取下载连接
        """
        item = MyDict(item)
        try:
            print(f" download_page info: {item.url}")
            logger.info("开始下载网页!{}。类型:{}".format(item.url, item.type))
            # current_app.logger.info("开始下载网页!{}。类型:{}".format(item.url, item.type))
            old_type = item.type
            if item.url != "None" and not cache.get(item.url):
                # if item.url != "None":
                html_obj = requests.get(item.url, headers=self.headers)
                html_str = html_obj.content.decode("gbk")
                item.content = html_str
                print(len(html_str))

                # 请求结果存入redis数据库
                cache.set(item.url, html_str)
                cache.expire(item.url, self.redis_key_timeout)

                # item.xpath_obj = lxml.html.fromstring(html_str)
            logger.info("下载前类型:{}, 下载后类型:{}".format(old_type, item.type))
            self.push_item_in_redis_list(self.message_b, item)
        except Exception as e:
            logger.error("download_page:  {}".format(e))
コード例 #2
0
def submit_data():

    form = symptomForm(request.form)

    if request.method == 'POST':
        if form.validate():

            # All code below is to coerce submitted data to required schema
            my_data = {}
            for key, value in form.allFields.data.items():
                if type(value) == dict:
                    my_data.update(value)
            # get rid of the csrf token
            del my_data["csrf_token"]

            # Properly structure the data
            for x in ["calendar", "diagnosis"]:
                my_data[x] = {}
                for key, value in my_data.items():
                    if x in key and type(value) == str:
                        new_key = key.split("_")[-1]
                        my_data[x].update({new_key: value})

            # Set the values for symptoms
            all_symptoms = my_data.get("symptoms")
            my_data["symptoms"] = {y: True for y in all_symptoms}

            # save data to cache
            cache.set("my_data", my_data)
            return redirect('/submit-data-success/')
    else:
        return render_template('submit-data.html',
                               title='Submit Data',
                               form=form)
コード例 #3
0
ファイル: falcon.py プロジェクト: blackmatrix7/selenium-toy
def search_iphone():
    # 购买者的信息,每次循环实时获取最新的购买者信息
    buyers_info = get_buyers_info()
    availability = r.get(current_config['IPHONE_MODELS_URL']).json()
    if availability['stores']:
        # 遍历意向购买的商店和意向购买的商品
        for store, models in buyers_info.items():
            # 遍历意向购买的型号和对应的购买人
            for model_number, buyers in models.items():
                # 获取商品型号在店内的库存
                stock = availability['stores'][store][model_number]
                if stock['availability']['unlocked'] is True:
                    for buyer in buyers:
                        key = '{}{}{}'.format(buyer['idcard'], store,
                                              model_number)
                        if cache.get(key) is None:
                            buyer['store'] = store
                            # with rabbit as mq:
                            #     mq.send_message(exchange_name='iphone', queue_name='buyers', messages=buyer)
                            # 日志记录及微信消息发送
                            msg = '发现有效库存,商店【{0}】, 型号【{1}】,时间【{2}】。'.format(
                                get_store_name(store),
                                get_model_name(model_number),
                                datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
                            r.get(
                                ' http://sc.ftqq.com/{}.send?text=您关注的iPhone已有库存&desp={}'
                                .format(current_config.SEC_KEY, msg))
                            logging.info(msg)
                            logging.info('买家信息:{}'.format(buyer))
                            logging.info('[猎鹰] 已将目标设备和买家信息发送给猎手')
                            # 已经发送过的购买者信息,5分钟内不再发送
                            cache.set(key=key, val='已发送', time=180)
        else:
            logging.info('[猎鹰] 没有发现有效库存')
コード例 #4
0
def submit_data_json():

    form = jsonForm(request.form)

    if request.method == 'POST':

        if form.validate():
            my_data = form.allFields.data.get("jsonData")
            my_data = json.loads(my_data)

            # Properly structure the data
            for x in ["calendar", "diagnosis"]:
                my_data[x] = {}
                for key, value in my_data.items():
                    if x in key and type(value) == str:
                        new_key = key.split("_")[-1]
                        my_data[x].update({new_key: value})

            cache.set("my_data", my_data)

        else:
            my_errors = {
                k: v
                for k, v in form.errors.get("allFields", {}).items()
            }
            cache.set("errors", my_errors)

        # Now send data along
        return redirect('/submit-data-success/')

    else:
        return render_template('submit-data-json.html',
                               title='Submit Data (Json)',
                               form=form)
コード例 #5
0
ファイル: cart.py プロジェクト: wenming0310/flask
def cart_add():
    cart = cache.get('cart%d' % current_user.id)
    c_id = int(request.args.get('id'))
    if cart is None:
        data = []
    else:
        data = cart
    if c_id in data:
        return jsonify({'status': False, 'msg': '您已添加过该产品,不可重复添加'})
    data.append(c_id)
    data = list(set(data))
    cache.set('cart%d' % current_user.id, data)
    return jsonify({'status': True, 'msg': '添加成功'})
コード例 #6
0
def create_tokens(user_id: str):
    config = current_app.config
    access_expires = config.get('JWT_ACCESS_TOKEN_EXPIRES')
    refresh_expires = config.get('JWT_REFRESH_TOKEN_EXPIRES')
    access_token = create_access_token(identity=user_id)
    refresh_token = create_refresh_token(identity=user_id)
    access_jti = get_jti(encoded_token=access_token)
    refresh_jti = get_jti(encoded_token=refresh_token)
    cache.set(access_jti, refresh_jti,
              int(access_expires.total_seconds() * 1.2))
    cache.set(refresh_jti, access_jti,
              int(refresh_expires.total_seconds() * 1.2))
    tokens = {'access_token': access_token, 'refresh_token': refresh_token}

    return tokens
コード例 #7
0
def code_sign_in_service(code: str):
    user_id = cache.get(code)

    if not user_id:
        return None

    user = mongo.db.users.find_one({'_id': ObjectId(user_id)})

    if not user:
        return None

    tokens = create_tokens(user_id=user_id)
    cache.set(user_id, user.get('roles'))

    return tokens
コード例 #8
0
def index():
    if request.method == 'POST':
        value = request.form.get('indexValue')
        bar = cache.get(value)
        if bar:
            return jsonify({'cached_result': bar})
        else:
            r = requests.post('http://api:4000', json={'value': value})
            result = r.json()  #得到的其实使dict
            cache.set(value, result.get('result'), timeout=50)
            history.insert({
                "requested time": datetime.now(),
                "requested index": value,
                "calculated value": result.get('result', '')
            })
            return jsonify(result)
    return render_template('index.html')
コード例 #9
0
def request_code_service(email: str):
    user = mongo.db.users.find_one({'email': email})

    if user:
        code = generate_code()
        cache.set(code, str(user.get('_id')), timeout=1800)

        # TODO I would do it would celery, but I don't see the point of doing it in a test task
        sent_email_thread = Thread(target=send_email,
                                   args=[
                                       current_app._get_current_object(),
                                       user.get('email'), '*****@*****.**',
                                       'Auth code', code
                                   ])
        sent_email_thread.start()

        return {'status': True, 'message': 'Email sent'}

    return None
コード例 #10
0
def sign_in_service(email: str, password: str):
    user = mongo.db.users.find_one({'email': email})

    if not user:
        return None

    user_password = user.get('password')

    if not user_password:
        return None

    is_correct_password = check_password_hash(user_password, password)

    if not is_correct_password:
        return None

    user_id = str(user.get('_id'))
    tokens = create_tokens(user_id=user_id)
    cache.set(user_id, user.get('roles'))

    return tokens
コード例 #11
0
ファイル: attribute.py プロジェクト: hulihutu/cmdb
 def set(cls, attr):
     cache.set('Field::ID::%s' % attr.attr_id, attr)
     cache.set('Field::Name::%s' % attr.attr_name, attr)
     cache.set('Field::Alias::%s' % attr.attr_alias, attr)
コード例 #12
0
ファイル: ci_type.py プロジェクト: kdyq007/cmdb-api
 def set(cls, ct):
     cache.set("CITypeSPEC::ID::%d" % ct.type_id, ct)
コード例 #13
0
ファイル: ci_type.py プロジェクト: kdyq007/cmdb-api
 def set(cls, key, values):
     citype = CITypeCache.get(key)
     if citype is not None:
         cache.set("CITypeAttribute::ID::%s" % citype.type_id, values)
         cache.set("CITypeAttribute::Name::%s" % citype.type_name, values)
コード例 #14
0
ファイル: account.py プロジェクト: hulihutu/cmdb
 def set(cls, role):
     cache.set("Role::rid::%s" % role.rid, role)
     cache.set("Role::role_name::%s" % role.role_name, role)
コード例 #15
0
ファイル: account.py プロジェクト: hulihutu/cmdb
 def set(cls, user):
     cache.set("User::uid::%s" % user.uid, user)
     cache.set("User::username::%s" % user.username, user)
     cache.set("User::nickname::%s" % user.nickname, user)
コード例 #16
0
ファイル: ci_type.py プロジェクト: kdyq007/cmdb-api
 def set(cls, ct):
     cache.set("CIType::Name::%s" % ct.type_name, ct)
     cache.set("CIType::ID::%d" % ct.type_id, ct)
コード例 #17
0
def save_sms(apple_id, sms_list):
    # 将验证码写入缓存,30分钟超时
    cache.set(apple_id, sms_list, time=1750)
    if cache.get(apple_id) is None:
        raise RuntimeError
コード例 #18
0
ファイル: user.py プロジェクト: kdyq007/qblog
 def set(cls, uid):
     cache.set("SpecialPermission::uid::%s" % uid, "Y", timeout=60 * 60 * 2)