问题:因为使用整数作为url查询参数,所以容易被遍历查询

解决:对整数键进行加密

方法:

# 加密
('加密%s' % id).encode('utf-8').hex()

# 简单的加解密
def decryt_hex(h):
    s = bytes.fromhex(h).decode('utf-8')
    return s[2:]

阅读全文

问题:如何生成验证码图片?

方法:

<?php
//必须至于顶部,多服务器端记录验证码信息,便于用户输入后做校验
session_start();
// 图片宽度、调试
$w = 150;
$h = 45;

//默认返回的是黑色的照片
$image = imagecreatetruecolor($w, $h);
//将背景设置为白色的
$bgcolor = imagecolorallocate($image, 255, 255, 255);
//将白色铺满地图
imagefill($image, 0, 0, $bgcolor);

//空字符串,每循环一次,追加到字符串后面  
$captch_code='';

阅读全文

问题:通过接口进行hive查询,太慢,使用fastapi框架,本想使用BackgroundTasks,但hive没有异步处理框架。查询到说是可以使用asyncio方法实现,但试了下后,发现不可以

解决:使用rq队列,通过队列方式处理hive查询,然后进行回调

注意:

1、jobs中的任务文件,引入config时注意路径,问题,可能需要把config所在目录加入项目环境变量

2、rq执行有时间限制,配置redis时需要配置下

# 增加超时时间为300秒  
q = Queue(connection=redis_conn, default_timeout=300)
或者
job = q.enqueue(my_function, args=(arg1, arg2), timeout=300)

问题:rqworker 运行时报错ERROR:root:Authentication required. 使用的是redis作为存储,因为redis设置了密码

解决:可以通过--url参数设置redis连接链接;也可以通过export设置redis连接链接为环境变量

方法:

1、rq连接redis

from rq import Queue
from redis import StrictRedis
from .config import config

redis_config = { 
    'host': config['RQ_SVR'],
    'db': config['RQ_DB'],
    'password': config['RQ_PASS']
    }   
redis_url = 'redis://:{password}@{host}:6379/{db}'.format(**redis_config)
redis_conn = StrictRedis.from_url(redis_url)
q = Queue(connection=redis_conn)

阅读全文