yj
2025-07-22 2a8d022a20f82c35e9df680dfb66c3c95863b190
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
§
    4h6ãót—dZddlZddlmZmZmZddlZddlmZddl    m
Z
Gd„d¦«Z e ¦«Z dS)u
Redis队列管理服务
éN)ÚOptionalÚDictÚAny)Úlogger)Úsettingsc
ó$—eZdZdZd„Zdedefd„Zdedefd„Zdedefd„Zdede    ee
fde fd    „Z     dded e dee    ee
ffd „Z    ddede de de fd„Zdede fd„Zdedeefd„Z    ddedede de fd„Zdede fd„Zdede fd„ZdS)ÚRedisQueueManageruRedis队列管理器cóz—tjtjd¬¦«|_d|_d|_d|_dS)NT)Údecode_responsesz ecloud_queue:zecloud_processing:zecloud_conversation:)ÚredisÚfrom_urlrÚ    redis_urlÚ redis_clientÚ queue_prefixÚprocessing_prefixÚconversation_prefix)Úselfs ú4d:\project\python\ECloud\app\services\redis_queue.pyÚ__init__zRedisQueueManager.__init__s;€Ý!œN­8Ô+=ÐPTÐUÑUÔUˆÔØ+ˆÔØ!5ˆÔØ#9ˆÔ Ð Ð óÚ    from_userÚreturncó—|j›|›S)u获取用户队列键)r©rrs  rÚget_user_queue_keyz$RedisQueueManager.get_user_queue_keys€àÔ#Ð0 YÐ0Ð0Ð0rcó—|j›|›S)u获取处理状态键)rrs  rÚget_processing_keyz$RedisQueueManager.get_processing_keys€àÔ(Ð5¨)Ð5Ð5Ð5rcó—|j›|›S)u获取用户对话ID键)rrs  rÚget_conversation_keyz&RedisQueueManager.get_conversation_keys€àÔ*Ð7¨IÐ7Ð7Ð7rÚ message_datac    óL—    | |¦«}tj|d¬¦«}|j ||¦«}t jd|›d|›d|›¦«dS#t$r2}t jd|›dt|¦«›¦«Yd    }~dSd    }~wwxYw)
u将消息加入用户队列F)Ú ensure_asciiu消息已加入队列: user=z, queue_length=z
, message=Tu消息入队失败: user=ú, error=N)
rÚjsonÚdumpsrÚlpushrÚinfoÚ    ExceptionÚerrorÚstr)rrr Ú    queue_keyÚ message_jsonÚresultÚes       rÚenqueue_messagez!RedisQueueManager.enqueue_message!sˀð     Ø×/Ò/°    Ñ:Ô:ˆIÝœ: lÀÐGÑGÔGˆLðÔ&×,Ò,¨Y¸ ÑEÔEˆFå ŒKÐq°yÐqÐqÐQWÐqÐqÐcoÐqÐqÑ rÔ rÐ rؐ4øåð    ð    ð    Ý ŒLÐP°YÐPÐPÍÈAÉÌÐPÐPÑ QÔ QÐ Qؐ55555øøøøð    øøøs‚A#A'Á'
B#Á1'BÂB#rÚtimeoutc    óš—    | |¦«}|dkr&|j ||¬¦«}|r|\}}n dS|j |¦«}|sdSt    j|¦«}t jd|›¦«|S#t$r2}t j    d|›dt|¦«›¦«Yd}~dSd}~wwxYw)u从用户队列中取出消息r)r0Nu消息已出队: user=u消息出队失败: user=r#) rrÚbrpopÚrpopr$Úloadsrr'r(r)r*)    rrr0r+r-Ú_r,r r.s             rÚdequeue_messagez!RedisQueueManager.dequeue_message1sü€ð    Ø×/Ò/°    Ñ:Ô:ˆIà˜Š{ˆ{àÔ*×0Ò0°ÀGÐ0ÑLÔLØð Ø&,‘OA||à˜4ð $Ô0×5Ò5°iÑ@Ô@ Ø#ð Ø˜4åœ: lÑ3Ô3ˆLÝ ŒKÐ<°Ð<Ð<Ñ =Ô =Ð =ØÐ øåð    ð    ð    Ý ŒLÐP°YÐPÐPÍÈAÉÌÐPÐPÑ QÔ QÐ Qؐ44444øøøøð    øøøs#‚?BÁBÁ!,BÂ
C
Â'CÃC
é,ÚstatusÚttlc    ó„—    | |¦«}|r7|j ||d¦«tjd|›d|›¦«n1|j |¦«tjd|›¦«dS#t $r2}tjd|›dt|¦«›¦«Yd}~d    Sd}~wwxYw)
u设置用户处理状态Ú
processingu设置处理状态: user=z, status=processing, ttl=u清除处理状态: user=Tu设置处理状态失败: user=r#NF)    rrÚsetexrr'Údeleter(r)r*)rrr8r9Úprocessing_keyr.s      rÚset_processing_statusz'RedisQueueManager.set_processing_statusMsö€ð    Ø!×4Ò4°YÑ?Ô?ˆNàð     EàÔ!×'Ò'¨¸¸\ÑJÔJÐJÝ” ØY°    ÐYÐYÐTWÐYÐYñôððð
Ô!×(Ò(¨Ñ8Ô8Ð8Ý” ÐC¸    ÐCÐCÑDÔDÐDà4øåð    ð    ð    Ý ŒLÐV¸9ÐVÐVÍcÐRSÉfÌfÐVÐVÑ WÔ WÐ Wؐ55555øøøøð    øøøs‚A?BÂ
B? 'B:Â:B?c    ó藠   | |¦«}|j |¦«dkS#t$r2}t    jd|›dt |¦«›¦«Yd}~dSd}~wwxYw)u!检查用户是否正在处理中ru检查处理状态失败: user=r#NF)rrÚexistsr(rr)r*)rrr>r.s    rÚ is_processingzRedisQueueManager.is_processingesŠ€ð    Ø!×4Ò4°YÑ?Ô?ˆNØÔ$×+Ò+¨NÑ;Ô;¸aÒ?Ð ?øÝð    ð    ð    Ý ŒLÐV¸9ÐVÐVÍcÐRSÉfÌfÐVÐVÑ WÔ WÐ Wؐ55555øøøøð    øøøs‚25µ
A1¿'A,Á,A1c    óà—    | |¦«}|j |¦«S#t$r2}t    jd|›dt |¦«›¦«Yd}~dSd}~wwxYw)u获取用户的对话IDu获取对话ID失败: user=r#N)rrÚgetr(rr)r*)rrÚconversation_keyr.s    rÚget_conversation_idz%RedisQueueManager.get_conversation_idns†€ð    Ø#×8Ò8¸ÑCÔCÐ ØÔ$×(Ò(Ð)9Ñ:Ô:Ð :øÝð    ð    ð    Ý ŒLÐR°yÐRÐRÍ#ÈaÉ&Ì&ÐRÐRÑ SÔ SÐ Sؐ44444øøøøð    øøøó‚.1±
A-»'A(Á(A-é€QÚconversation_idc    ó—    | |¦«}|j |||¦«tjd|›d|›¦«dS#t
$r2}tjd|›dt|¦«›¦«Yd}~dSd}~wwxYw)u设置用户的对话IDu设置对话ID: user=z, conversation_id=Tu设置对话ID失败: user=r#NF)rrr<rr'r(r)r*)rrrIr9rEr.s      rÚset_conversation_idz%RedisQueueManager.set_conversation_idws¸€ð        Ø#×8Ò8¸ÑCÔCÐ Ø Ô × #Ò #Ð$4°c¸?Ñ KÔ KÐ KÝ ŒKØV¨    ÐVÐVÀ_ÐVÐVñ ô ð ð4øÝð    ð    ð    Ý ŒLÐR°yÐRÐRÍ#ÈaÉ&Ì&ÐRÐRÑ SÔ SÐ Sؐ55555øøøøð    øøøs‚A AÁ
B Á'BÂB c    óà—    | |¦«}|j |¦«S#t$r2}t    jd|›dt |¦«›¦«Yd}~dSd}~wwxYw)u获取用户队列长度u获取队列长度失败: user=r#Nr)rrÚllenr(rr)r*©rrr+r.s    rÚget_queue_lengthz"RedisQueueManager.get_queue_length†s…€ð    Ø×/Ò/°    Ñ:Ô:ˆIØÔ$×)Ò)¨)Ñ4Ô4Ð 4øÝð    ð    ð    Ý ŒLÐV¸9ÐVÐVÍcÐRSÉfÌfÐVÐVÑ WÔ WÐ Wؐ11111øøøøð    øøørGc    ó—    | |¦«}|j |¦«tjd|›¦«dS#t
$r2}tjd|›dt|¦«›¦«Yd}~dSd}~wwxYw)u清空用户队列u清空用户队列: user=Tu清空用户队列失败: user=r#NF)rrr=rr'r(r)r*rNs    rÚclear_user_queuez"RedisQueueManager.clear_user_queues£€ð    Ø×/Ò/°    Ñ:Ô:ˆIØ Ô × $Ò $ YÑ /Ô /Ð /Ý ŒKÐ?°IÐ?Ð?Ñ @Ô @Ð @ؐ4øÝð    ð    ð    Ý ŒLÐV¸9ÐVÐVÍcÐRSÉfÌfÐVÐVÑ WÔ WÐ Wؐ55555øøøøð    øøøs‚AA
Á
 
BÁ'BÂBN)r)r7)rH)Ú__name__Ú
__module__Ú __qualname__Ú__doc__rr*rrrrrÚboolr/Úintrr6r?rBrFrKrOrQ©rrr    r     s €€€€€ØÐð:ð:ð:ð 1¨Cð1°Cð1ð1ð1ð1ð6¨Cð6°Cð6ð6ð6ð6ð8¨cð8°cð8ð8ð8ð8ð¨ð¸DÀÀcÀ¼NðÈtððððð"./ððØðØ'*ðà    $s˜Cx”.Ô    !ððððð:8;ððØðØ&*ðØ14ðà     ððððð0 sð¨tððððð¨Sð°X¸c´]ððððð@Eð ð Øð Ø/2ð Ø9<ð à     ð ð ð ð ð¨#ð°#ððððð    ¨#ð    °$ð    ð    ð    ð    ð    ð    rr    ) rUr$Útypingrrrr ÚlogururÚconfigrr    Ú redis_queuerXrrú<module>r]sªðððð € € € Ø&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ø € € € ØÐÐÐÐÐØÐÐÐÐÐðLðLðLðLðLñLôLðLð` ÐÑ!Ô!€ € € r