Xử lý luồng ngày càng trở nên quan trọng đối với sự thành công của các tổ chức trong mọi ngành. Khối lượng và tốc độ của dữ liệu đang tăng lên nhanh chóng
- Âm lượng. Đến năm 2025, IDC ước tính sẽ có 55. 7B thiết bị được kết nối trên toàn thế giới, tạo ra 73. 1ZB dữ liệu mỗi năm
- vận tốc. Tốc độ là lợi thế cạnh tranh trong nền kinh tế số. Các tổ chức có thể hành động trên dữ liệu của họ trong một phần nghìn giây sẽ thu được thông tin chi tiết có giá trị nhất
Đơn giản là con người không thể hiểu dữ liệu ở khối lượng và tốc độ này, càng không thể hành động trên nó. Đây là nơi xử lý luồng trở nên có giá trị nhất — tự động hóa các phản hồi để thực hiện hành động gần như theo thời gian thực
Các công ty muốn tận dụng lợi thế của học máy và tự động hóa đang nhanh chóng tuyển dụng các nhà khoa học dữ liệu, dẫn đến sự bùng nổ nhu cầu về thực hành. Nhưng các công cụ hỗ trợ các nhà khoa học dữ liệu tập trung vào việc xử lý hàng loạt dữ liệu lịch sử, khiến họ khó làm việc với dữ liệu truyền trực tuyến
Đây là nơi Quix đến. Chúng tôi đã tạo một thư viện máy khách thân thiện với Python cho phép các nhà khoa học dữ liệu xử lý dữ liệu truyền phát và triển khai các mô hình máy học cũng như sản phẩm dữ liệu của họ mà không cần sự can thiệp của nhà phát triển và các chuyên gia kỹ thuật khác
stream-python là ứng dụng khách Python chính thức cho Stream, một dịch vụ web để xây dựng các nguồn cấp tin tức và luồng hoạt động có thể mở rộng
Lưu ý rằng cũng có một thư viện tích hợp Django - Stream cấp cao hơn kết nối với Django ORM
Bạn có thể đăng ký tài khoản Stream tại https. // getstream. io/get_started
Cài đặt
Cài đặt từ Pypi
pip install stream-python
tài liệu đầy đủ
Tài liệu cho ứng dụng khách Python này có sẵn tại trang web Stream
Cách sử dụng
import datetime # Create a new client import stream client = stream.connect['YOUR_API_KEY', 'API_KEY_SECRET'] # Create a new client specifying data center location client = stream.connect['YOUR_API_KEY', 'API_KEY_SECRET', location='us-east'] # Find your API keys here //getstream.io/dashboard/ # Create a feed object user_feed_1 = client.feed['user', '1'] # Get activities from 5 to 10 [slow pagination] result = user_feed_1.get[limit=5, offset=5] # [Recommended & faster] Filter on an id less than the given UUID result = user_feed_1.get[limit=5, id_lt="e561de8f-00f1-11e4-b400-0cc47a024be0"] # Create a new activity activity_data = {'actor': 1, 'verb': 'tweet', 'object': 1, 'foreign_id': 'tweet:1'} activity_response = user_feed_1.add_activity[activity_data] # Create a bit more complex activity activity_data = {'actor': 1, 'verb': 'run', 'object': 1, 'foreign_id': 'run:1', 'course': {'name': 'Golden Gate park', 'distance': 10}, 'participants': ['Thierry', 'Tommaso'], 'started_at': datetime.datetime.now[] } user_feed_1.add_activity[activity_data] # Remove an activity by its id user_feed_1.remove_activity["e561de8f-00f1-11e4-b400-0cc47a024be0"] # or by foreign id user_feed_1.remove_activity[foreign_id='tweet:1'] # Follow another feed user_feed_1.follow['flat', '42'] # Stop following another feed user_feed_1.unfollow['flat', '42'] # List followers/following following = user_feed_1.following[offset=0, limit=2] followers = user_feed_1.followers[offset=0, limit=10] # Creates many follow relationships in one request follows = [ {'source': 'flat:1', 'target': 'user:1'}, {'source': 'flat:1', 'target': 'user:2'}, {'source': 'flat:1', 'target': 'user:3'} ] client.follow_many[follows] # Batch adding activities activities = [ {'actor': 1, 'verb': 'tweet', 'object': 1}, {'actor': 2, 'verb': 'watch', 'object': 3} ] user_feed_1.add_activities[activities] # Add an activity and push it to other feeds too using the `to` field activity = { "actor":"1", "verb":"like", "object":"3", "to":["user:44", "user:45"] } user_feed_1.add_activity[activity] # Retrieve an activity by its ID client.get_activities[ids=[activity_id]] # Retrieve an activity by the combination of foreign_id and time client.get_activities[foreign_id_times=[ [foreign_id, activity_time], ]] # Enrich while getting activities client.get_activities[ids=[activity_id], enrich=True, reactions={"counts": True}] # Update some parts of an activity with activity_partial_update set = { 'product.name': 'boots', 'colors': { 'red': '0xFF0000', 'green': '0x00FF00' } } unset = [ 'popularity', 'details.info' ] # ...by ID client.activity_partial_update[id=activity_id, set=set, unset=unset] # ...or by combination of foreign_id and time client.activity_partial_update[foreign_id=foreign_id, time=activity_time, set=set, unset=unset] # Generating user token for client side usage [JS client] user_token = client.create_user_token["user-42"] # Javascript client side feed initialization # client = stream.connect[apiKey, userToken, appId]; # Generate a redirect url for the Stream Analytics platform to track # events/impressions on url clicks impression = { 'content_list': ['tweet:1', 'tweet:2', 'tweet:3'], 'user_data': 'tommaso', 'location': 'email', 'feed_id': 'user:global' } engagement = { 'content': 'tweet:2', 'label': 'click', 'position': 1, 'user_data': 'tommaso', 'location': 'email', 'feed_id': 'user:global' } events = [impression, engagement] redirect_url = client.create_redirect_url['//google.com/', 'user_id', events]
ứng dụng khách JS
Đóng góp
Trước tiên, hãy đảm bảo rằng bạn có thể chạy bộ thử nghiệm. Các bài kiểm tra được chạy qua py. kiểm tra
py.test # with coverage py.test --cov stream --cov-report html # against a local API backend LOCAL=true py.test
Cài đặt màu đen và flake8
pip install .[ci]
Cài đặt móc git để tránh đẩy mã không hợp lệ [git commit sẽ chạy black
và flake8
]
Ra mắt phiên bản mới
Để phát hành phiên bản mới, bạn cần phải là người bảo trì trên Pypi
- Cập nhật CHANGELOG
- Cập nhật phiên bản khi thiết lập. py
- Cam kết và đẩy lên Github
- Tạo một thẻ mới cho phiên bản [ví dụ:.
v2.9.0
] - Tạo một dist mới với python
python setup.py sdist
- Tải lên bản phân phối mới bằng sợi xe
twine upload dist/stream-python-VERSION-NAME.tar.gz
Nếu không chắc chắn, bạn cũng có thể kiểm tra bằng máy chủ kiểm tra Pypi twine upload --repository-url //test.pypi.org/legacy/ dist/stream-python-VERSION-NAME.tar.gz
Thông tin bản quyền và giấy phép
Dự án được cấp phép theo Khoản 3 BSD
Chúng tôi đang thuê
Gần đây, chúng tôi đã đóng vòng tài trợ Series B trị giá 38 triệu đô la và chúng tôi tiếp tục phát triển tích cực. API của chúng tôi được sử dụng bởi hơn một tỷ người dùng cuối và bạn sẽ có cơ hội tạo ra tác động lớn đến sản phẩm trong một nhóm gồm các kỹ sư giỏi nhất trên toàn thế giới