Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 7f09507

Browse files
Merge pull request #10 from sensorsdata/yjz_fix_batch_consumer
[feature] 优化 batch_consumer 多线程问题
2 parents 3152deb + 488be6c commit 7f09507

File tree

3 files changed

+16
-13
lines changed

3 files changed

+16
-13
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,4 +64,4 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
6464
See the License for the specific language governing permissions and
6565
limitations under the License.
6666

67-
**禁止一切基于神策数据 Python 开源 SDK 的所有商业活动!**
67+
**禁止一切基于神策数据 Python 开源 SDK 的所有商业活动!**

sensorsanalytics/sdk.py

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@
2525
import urllib2
2626
import urllib
2727

28-
SDK_VERSION = '1.10.1'
28+
SDK_VERSION = '1.10.2'
29+
batch_consumer_lock = threading.RLock()
2930

3031
try:
3132
isinstance("", basestring)
@@ -633,21 +634,23 @@ def __init__(self, url_prefix, max_size=50, request_timeout=None):
633634
self._max_size = min(50, max_size)
634635

635636
def send(self, json_message):
636-
self._buffers.append(json_message)
637-
if len(self._buffers) >= self._max_size:
638-
self.flush()
637+
with batch_consumer_lock:
638+
self._buffers.append(json_message)
639+
if len(self._buffers) >= self._max_size:
640+
self.flush()
639641

640642
def flush(self):
641643
"""
642644
用户可以主动调用 flush 接口,以便在需要的时候立即进行数据发送。
643645
"""
644-
while self._buffers:
645-
msg_list = self._buffers[:self._max_size]
646-
self._do_request({
647-
'data_list': self._encode_msg_list(msg_list),
648-
'gzip': 1
649-
})
650-
self._buffers = self._buffers[self._max_size:]
646+
with batch_consumer_lock:
647+
while self._buffers:
648+
msg_list = self._buffers[:self._max_size]
649+
self._do_request({
650+
'data_list': self._encode_msg_list(msg_list),
651+
'gzip': 1
652+
})
653+
self._buffers = self._buffers[self._max_size:]
651654

652655
def close(self):
653656
"""

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
long_description = fh.read()
66
setuptools.setup(
77
name="SensorsAnalyticsSDK",
8-
version="1.10.1",
8+
version="1.10.2",
99
author="Jianzhong YUE", # 项目作者
1010
author_email="[email protected]",
1111
description="This is the official Python SDK for Sensors Analytics.",

0 commit comments

Comments
 (0)