首页 > 其他分享 >问题记录贴,留给以后的自己解决

问题记录贴,留给以后的自己解决

时间:2023-07-28 12:12:46浏览次数:26  
标签:status name 记录 redis lake 留给 并发 解决 conn

一、Python正则的一个小问题

import re

html = """
<p>hello world</p> <p>anyiya1 lake</p> <p>anyiya2 lake</p>
"""
last_name = 'lake'
pattern = re.compile(f'<p>(.*?){last_name}</p>',re.DOTALL) 
first_name = pattern.search(html).group(1)
print(first_name)

# 输出:hello world</p> <p>anyiya1
# 期望:anyiya1

Q:'?'可以让右边界非贪婪,如何让左边界也尽可能的小呢?

二、Redis异步并发下写的安全问题

# 以下代码处在一个异步模块中,存在并发操作的可能
import redis
redis_pool = redis.ConnectionPool(host='127.0.0.1', port=6379, password='', db=0)
redis_conn = redis.Redis(connection_pool=redis_pool)

# 代码块A ...
while True:
    if redis_conn.get('status') == b'bitlock':
        page.wait_for_timeout(random.randint(10000,20000))
    else:
        redis_conn.watch('status')
        pipe = redis_conn.pipeline()
        pipe.set('status', 'bitlock')
        exec_result = pipe.execute()
        # 更改状态失败,其他线程已经更改了状态
        if exec_result is None:
            continue
        # 更改状态成功
        else:
            break
# 代码块B ...
redis_conn.set('status','unlock')

场景其实是并发下某一模块只能单实例运行,最优策略当然是用队列再做个负载均衡,但是需求急,想先通过上锁逻辑临时处理这个问题。任务并发也没有到百万级,只是在实践过程中引起了思考。
Q:Redis写操作通过事务,这样就能保证写操作的绝对安全吗?(绝对不会并发上锁)

标签:status,name,记录,redis,lake,留给,并发,解决,conn
From: https://www.cnblogs.com/thx2199/p/17587241.html

相关文章

  • 记录一下升级Gradle 4.2.2的问题
    由于广告SDK版本升级,需要升级Gradle,所以把项目从gradle:3.4.3升级到了gradle:4.2.2记录两个比较坑的问题编译报错:InstalledBuildToolsrevision31.0.0iscorrupted.RemoveandinstallagainusingtheSDKManager.解决方法:https://stackoverflow.com/questions/6......
  • postgresql 数据库 报错 FATAL: sorry, too many clients already 解决方法
    场景项目postgres连接不上,所有连接报错:psql:FATAL:sorry,toomanyclientsalready原由程序使用连接未及时释放,连接一直处于idle状态处理方式1、程序里面未释放的连接,在使用后及时释放;2、postgres连接数默认最大100个,在配置文件修改该参数;postgres.confmax_con......
  • Keepalived脑裂的解决和预防(附脚本)
    在实际生产环境中,我们可以从以下几个方面来防止裂脑问题的发生:同时使用串行电缆和以太网电缆连接,同时用两条心跳线路,这样一条线路坏了,另一个还是好的,依然能传送心跳消息。当检测到裂脑时强行关闭一个心跳节点(这个功能需特殊设备支持,如Stonith、feyce)。相当于备节点接收不到心跳消患......
  • SQL学习记录
    #--数据查找(值)#--调用exec_FindValueInDB'关键字'CREATEPROCEDURE[dbo].[_FindValueInDB](@valueVARCHAR(1024))ASBEGINSETNOCOUNTON;DECLARE@sqlVARCHAR(1024)DECLARE@tableVARCHAR(64)DECLARE@columnVARCHAR(64)CREATE......
  • centos7关闭防火墙后只有22端口可以telnet的解决方法
    1、问题描述防火墙已经关闭22端口可以telnet其他端口无法telnet2、解决方法注意:下列命令要用root账号/权限执行2.1、开启防火墙systemctlstartfirewalld2.2、添加要开放的端口该命令以8081端口为示例firewall-cmd--add-port=8081/tcp2.3、重新加载防......
  • 解决已安装了pillow后,依然无法引入PIL问题
    最近在学习Django,在编写随机码的时候,需要用到PIL的库,在安装完pillow包后,发现在引入PIL库依然报错。在网上收了很多,都没有解决。最后发现是因为pillow包没有在python的lab/site-packages文件夹里,所以只要把安装在venv的lab/site-packages文件夹里的pillow、PIL拷贝到python的对应......
  • Codeforces Round 888 (Div. 3)记录
    A.EscalatorConversations#include<cstdio>#include<algorithm>#include<cmath>#include<vector>#include<string.h>#include<set>#include<string>#include<map>#include<iostream>#include<queue>......
  • jmeter 项目混合接口实战记录
    1. 项目结构:1.1混合接口,创建事务控制器,将多个接口,按照业务逻辑,串行排列组合,接口之间采用后置beanshell或者jsonpath、正则关联 1.1 第一个接口beanshell 取样器,编辑参数化需要的随机参数,防止数据命中缓存importorg.apache.jmeter.config.Arguments;importjava.te......
  • 在前端页面中一直出现"Signature has expired."的报错该如何解决
    在排查完后端的问题后,发现还是出现这样的情况很有可能是前端代码传入身份验证的jwt_token时出现了问题jwt和token串之间需要添加一个空格 ......
  • 记录--虚拟 DOM 和实际 DOM 有何不同?
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助前言本文我们会先聊聊DOM的一些缺陷,然后在此基础上介绍虚拟DOM是如何解决这些缺陷的,最后再站在双缓存和MVC的视角来聊聊虚拟DOM。理解了这些会让你对目前的前端框架有一个更加底层的认识,这也有助于你更好......