|
@@ -23,13 +23,14 @@ MAX_URL_COUNT = 1000 # 缓存中最大request数
|
|
|
class RequestBuffer(threading.Thread):
|
|
|
dedup = None
|
|
|
|
|
|
- def __init__(self, redis_key, rabbitmq=None):
|
|
|
+ def __init__(self, redis_key, rabbitmq=None, user=None):
|
|
|
if not hasattr(self, "_requests_deque"):
|
|
|
super(RequestBuffer, self).__init__()
|
|
|
|
|
|
self._thread_stop = False
|
|
|
self._is_adding_to_db = False
|
|
|
self._redis_key = redis_key
|
|
|
+ self._user = user
|
|
|
|
|
|
self._requests_deque = collections.deque()
|
|
|
self._del_requests_deque = collections.deque()
|
|
@@ -78,7 +79,7 @@ class RequestBuffer(threading.Thread):
|
|
|
|
|
|
queue = table or self._tab_failed_requests
|
|
|
# 设置访问者的唯一标识
|
|
|
- properties = dict(correlation_id=self._redis_key)
|
|
|
+ properties = dict(correlation_id=self._user or self._redis_key)
|
|
|
self._rabbitmq.add(request_dict, queue=queue, properties=properties)
|
|
|
except Exception as e:
|
|
|
log.exception(e)
|
|
@@ -96,6 +97,8 @@ class RequestBuffer(threading.Thread):
|
|
|
return self._is_adding_to_db
|
|
|
|
|
|
def __add_request_to_db(self):
|
|
|
+ kw = {"properties": dict(correlation_id=self._user) if self._user else None}
|
|
|
+
|
|
|
request_list = []
|
|
|
prioritys = []
|
|
|
callbacks = []
|
|
@@ -129,13 +132,13 @@ class RequestBuffer(threading.Thread):
|
|
|
|
|
|
# 入库(超过上限[MAX_URL_COUNT]执行)
|
|
|
if len(request_list) > MAX_URL_COUNT:
|
|
|
- self._rabbitmq.add_batch(self._tab_requests, request_list)
|
|
|
+ self._rabbitmq.add_batch(self._tab_requests, request_list, **kw)
|
|
|
request_list = []
|
|
|
prioritys = []
|
|
|
|
|
|
# 入库(小于上限[MAX_URL_COUNT]执行)
|
|
|
if request_list:
|
|
|
- self._rabbitmq.add_batch(self._tab_requests, request_list)
|
|
|
+ self._rabbitmq.add_batch(self._tab_requests, request_list, **kw)
|
|
|
|
|
|
# 执行回调
|
|
|
for callback in callbacks:
|