django-signalqueue

Phần mềm chụp màn hình:
django-signalqueue
Các chi tiết về phần mềm:
Phiên bản: 0.5.1
Ngày tải lên: 20 Feb 15
Nhà phát triển: Alexander Bohn
Giấy phép: Miễn phí
Phổ biến: 7

Rating: 3.0/5 (Total Votes: 1)

Sau khi một số tiền nhất định của thời gian bất cứ ai liên quan đến bản thân với những khuôn khổ Django sẽ đặt câu hỏi: Tôi yêu các tín hiệu của Django, thực sự. Nhưng nếu tôi chỉ có thể gửi cho họ không đồng bộ. Giống như, vào một số chủ đề khác hoặc một cái gì đó, tôi không thực sự biết .... Có phải đó là bằng cách nào đó có thể?
Vâng, bây giờ bạn có thể dễ dàng làm điều đó với django-signalqueue.
Watch, tôi sẽ chỉ cho bạn. Đầu tiên, cài đặt django-signalqueue:
$ Pip cài đặt django-signalqueue # này sẽ cài đặt lốc xoáy và django-delegate nếu cần thiết
... Bạn cũng có thể muốn có một số các gói tùy chọn, nếu bạn không có họ đã được:
$ Brew cài đặt redis yajl # s / brew / apt-get / khẩu vị
$ Pips cài đặt redis hiredis # đề nghị
$ Pip cài đặt ujson # đề nghị
$ Pip cài đặt czjson yajl simplejson # những công việc quá
$ Pips cài đặt mũi django-mũi # cho các bài kiểm tra
Thêm django-signalqueue để INSTALLED_APPS của bạn, và các thiết lập cho một hàng đợi, trong khi bạn đang ở trong settings.py của bạn:
# Settings.py
INSTALLED_APPS = [
& Nbsp; 'signalqueue', # ...
]
SQ_QUEUES = {
& Nbsp; 'mặc định': {# bạn cần ít nhất một dict tên là 'mặc định' trong SQ_QUEUES
& Nbsp; 'NAME': 'signalqueue_default', # tùy chọn - mặc định là 'signalqueue_default'
& Nbsp; 'ENGINE': 'signalqueue.worker.backends.RedisSetQueue', # cần thiết - điều này là lái xe của hàng đợi của bạn
& Nbsp; 'INTERVAL': 30, # 1/3 sec
& Nbsp; "OPTIONS ': dict (),
& Nbsp;},
}
SQ_RUNMODE = 'SQ_ASYNC_REQUEST' # sử dụng async văn bởi mặc định
SQ_WORKER_PORT = 11231 # cảng quá trình công nhân xếp hàng của bạn sẽ liên kết với
Bên cạnh đó tất cả điều đó, bạn chỉ cần một cuộc gọi đến signalqueue.autodiscover () trong URLconf gốc của bạn:
# Urls.py
signalqueue nhập khẩu
signalqueue.autodiscover ()
Bạn có thể xác định tín hiệu async!
Tín hiệu không đồng bộ là trường hợp của signalqueue.dispatch.AsyncSignal mà bạn đã xác định tại một trong các địa điểm sau:
- Your_app / signals.py (rất hay nếu bạn đã sử dụng tập tin này, như nhiều người làm)
- Module có tên trong danh sách settings.SQ_ADDITIONAL_SIGNALS hoặc tuple
- Sắp có: signalqueue.register () - vì vậy bạn có thể đặt chúng ở bất cứ đâu khác.
AsyncSignals được xác định giống như các trường hợp quen thuộc của django.dispatch.Signal bạn biết và tình yêu:
# Yourapp / signals.py
từ signalqueue.dispatch nhập AsyncSignal
từ signalqueue.mappings nhập ModelInstanceMap
# Hai cấu trúc này làm điều tương tự
my_signal = AsyncSignal (providing_args = ['dụ']) # các yuge
my_other_signal = AsyncSignal (providing_args = {'dụ': ModelInstanceMap}) # với ánh xạ
# Những gì sau có thể đi bất cứ nơi nào - chỉ các trường hợp cần phải được trong yourapp / signals.py:
def callback (sender, ** kwargs):
& Nbsp; in "I,% s, đã được bãi phái không đồng bộ bởi% s, nhờ django-signalqueue." % (
& Nbsp; str (kwargs ['dụ']),
& Nbsp; người gửi .__ name__)
my_signal.connect (gọi lại)
... Sự khác biệt chính là định nghĩa thứ hai, trong đó xác định providing_args như một dict với các lớp bản đồ thay vì một danh sách đơn giản. Chúng tôi sẽ giải thích các lớp bản đồ sau này, nhưng nếu bạn đang đi qua các trường hợp mô hình Django để tín hiệu của bạn, bạn không phải lo lắng về điều này.
Một khi các công nhân đang chạy, bạn có thể gửi tín hiệu tới các hàng đợi như vậy:
>>> My_signal.send (sender = AModelClass, ví dụ = a_model_instance)
Để lửa tín hiệu của bạn giống như một tín hiệu Django bình thường, bạn có thể làm điều này:
>>> My_signal.send_now (sender = AModelClass, ví dụ = a_model_instance)
Tune trong ngày mai cho các kết luận đáng kinh ngạc của ... README django-signalqueue !!!!!!

Yêu cầu :

  • Python
  • Django

Phần mềm khác của nhà phát triển Alexander Bohn

django-delegate
django-delegate

15 Apr 15

hdf5-django
hdf5-django

20 Feb 15

dwight
dwight

14 Apr 15

Ý kiến ​​để django-signalqueue

Bình luận không
Nhập bình luận
Bật hình ảnh!