原因:celery会使用redis数据库,这时有可能是因为数据库连接redis数据库的密码错误导致的。确认一下密码。
原来的配置文件:
broker_url= "redis://8.136.181.55:6379/10"
celery后台发生异常
解决-修改配置文件:
broker_url= "redis://:redXXX@8.136.181.55:6379/10"
其中xxxxx是密码,密码前必须加冒号
再重启celery
celery -A celery_tasks.main worker -l info
运行:
Lần đầu sử dụng Django Celery, mới đối với Django và Celery
Dưới đây là những gì tôi đã cố gắng cho đến nay. Tôi nhận được lỗi sau
RuntimeError tại /contacts/upload độ sâu đệ quy tối đa vượt quá
Tôi đang sử dụng SQS và trình môi giới tin nhắn
cài đặt. py
# Celery
import djcelery
djcelery.setup_loader[]
INSTALLED_APPS += [
'south',
'userena',
'social_auth',
'djcelery',
]
BROKER_TRANSPORT = 'sqs'
BROKER_TRANSPORT_OPTIONS = {
'region': 'eu-west-1',
}
BROKER_USER = 'xyz'
BROKER_PASSWORD = 'zyx'
nhiệm vụ. py
@task
def upload[request, **kwargs]:
file = request.FILES['file']
ContactCSVModel.import_from_file[file]
return True
lượt xem. py
@login_required
def upload[request]:
result = upload[request]
if result:
messages.add_message[request, messages.SUCCESS, 'Items have been added to the database.']
else:
etc
Ai đó có thể vui lòng giúp tôi hiểu những gì tôi đang làm sai ở đây. Cảm ơn bạn
Celery đặt mục tiêu trở thành một giải pháp linh hoạt và đáng tin cậy, tốt nhất để xử lý một lượng lớn tin nhắn theo kiểu phân tán, đồng thời cung cấp cho các hoạt động các công cụ để duy trì một hệ thống như vậy
Celery có một cộng đồng người dùng và cộng tác viên lớn và đa dạng, bạn nên tham gia cùng chúng tôi trên IRC hoặc our mailing-list.
Để đọc thêm về Cần tây, bạn nên truy cập trang web của chúng tôi
Mặc dù phiên bản này tương thích ngược với các phiên bản trước nhưng điều quan trọng là bạn phải đọc phần sau
If you use Celery in combination with Django you must also read the django-celery changelog and upgrade to django-celery 2.5.
Phiên bản này được hỗ trợ chính thức trên CPython 2. 5, 2. 6, 2. 7, 3. 2 và 3. 3, cũng như PyPy và Jython
Ghi chú quan trọng
Nhóm kết nối môi giới hiện được bật theo mặc định
Hệ thống phụ trợ kết quả Rabbit. Exchange không còn tự động xóa nữa
Giải pháp treo công nhân [nhưng phải bật thủ công]
Tối ưu hóa
Thay đổi dòng thời gian ngừng sử dụng
Loại bỏ
mô-đun không dùng nữa
Tin tức
hỗ trợ múi giờ
Bộ nối tiếp bảo mật mới sử dụng ký mã hóa
Cài đặt
CELERY_RESULT_EXCHANGE = 'celeryresults2'
1 mớiCELERY_RESULT_EXCHANGE = 'celeryresults2'
2 cung cấp tác vụ hiện đang thực thiTrong những tin tức khác
Sửa lỗi
Lưu ý quan trọng¶
Nhóm kết nối môi giới hiện được bật theo mặc định¶
Giới hạn mặc định là 10 kết nối, nếu bạn có nhiều luồng/luồng xanh sử dụng kết nối cùng lúc, bạn có thể muốn điều chỉnh giới hạn này để tránh tranh chấp
Xem cài đặt
CELERY_RESULT_EXCHANGE = 'celeryresults2'3 để biết thêm thông tin
Cũng lưu ý rằng các tác vụ xuất bản sẽ được thử lại theo mặc định, để thay đổi mặc định này hoặc chính sách thử lại mặc định, hãy xem
CELERY_RESULT_EXCHANGE = 'celeryresults2'4 và
CELERY_RESULT_EXCHANGE = 'celeryresults2'5
Rabbit Kết quả phụ trợ. Exchange không còn tự động xóa¶
Trao đổi được sử dụng cho các kết quả trong chương trình phụ trợ kết quả Rabbit [AMQP] đã từng đặt cờ auto_delete, điều này có thể dẫn đến tình trạng tương tranh dẫn đến cảnh báo khó chịu
Đối với người dùng RabbitMQ
Các trao đổi cũ được tạo bằng cờ auto_delete được bật phải bị xóa
Lệnh camqadm có thể được sử dụng để xóa trao đổi trước đó
broker_url= "redis://:redXXX@8.136.181.55:6379/10"
1Thay thế cho việc xóa trao đổi cũ, bạn có thể định cấu hình tên mới cho trao đổi
CELERY_RESULT_EXCHANGE = 'celeryresults2'
Nhưng bạn phải đảm bảo rằng tất cả khách hàng và nhân viên đều sử dụng cài đặt mới này để họ được cập nhật để sử dụng cùng một tên trao đổi
Giải pháp treo công nhân [nhưng phải bật thủ công]¶
Cài đặt CELERYD_FORCE_EXECV đã được thêm vào để giải quyết vấn đề về bế tắc bắt nguồn từ các luồng và ngã ba được trộn lẫn với nhau
broker_url= "redis://:redXXX@8.136.181.55:6379/10"
3Cài đặt này được khuyến nghị cho tất cả người dùng sử dụng nhóm prefork, nhưng đặc biệt là người dùng cũng sử dụng giới hạn thời gian hoặc cài đặt nhiệm vụ tối đa cho mỗi con
Xem Vấn đề Python 6721 để đọc thêm về vấn đề này và tại sao sử dụng
CELERY_RESULT_EXCHANGE = 'celeryresults2'
6 là giải pháp an toàn duy nhất
Kích hoạt tùy chọn này sẽ dẫn đến một hình phạt nhẹ về hiệu suất khi các quy trình nhân viên con mới được bắt đầu và nó cũng sẽ tăng mức sử dụng bộ nhớ [nhưng nhiều nền tảng được tối ưu hóa, do đó tác động có thể là tối thiểu]. Xem xét rằng nó đảm bảo độ tin cậy khi thay thế các quy trình công nhân bị mất, nó đáng giá
Nó đã là hành vi mặc định trên Windows
Nó sẽ là hành vi mặc định cho tất cả các nền tảng trong phiên bản tương lai
Tối ưu hóa¶
Đường dẫn mã được sử dụng khi nhân viên thực thi một tác vụ đã được tối ưu hóa rất nhiều, nghĩa là nhân viên có thể xử lý nhiều tác vụ hơn/giây so với các phiên bản trước. Ví dụ: nhóm solo hiện có thể xử lý tới 15000 tác vụ/giây trên MacBook Pro 4 lõi khi sử dụng phương tiện vận chuyển pylibrabbitmq, nơi trước đây nó chỉ có thể thực hiện 5000 tác vụ/giây
Truy nguyên lỗi tác vụ hiện ngắn hơn nhiều
Đã khắc phục sự chậm trễ đáng chú ý trong quá trình xử lý tác vụ khi giới hạn tốc độ được bật
Thay đổi dòng thời gian ngừng sử dụng¶
Loại bỏ¶
Chữ ký
CELERY_RESULT_EXCHANGE = 'celeryresults2'
7 cũ củaCELERY_RESULT_EXCHANGE = 'celeryresults2'
8 không còn được sử dụng nữa [ban đầu được lên kế hoạch xóa trong 2. 4]. Các thuộc tínhCELERY_RESULT_EXCHANGE = 'celeryresults2'
9 và
30 không dùng nữa cũng đã bị xóabroker_url= "redis://:redXXX@8.136.181.55:6379/10"
Các chức năng
31,broker_url= "redis://:redXXX@8.136.181.55:6379/10"
32 vàbroker_url= "redis://:redXXX@8.136.181.55:6379/10"
33 đã bị xóa [ban đầu] được lên kế hoạch xóa sau 2. 3]broker_url= "redis://:redXXX@8.136.181.55:6379/10"
Tác vụ
34 tích hợp sẵn đã bị xóa [ban đầu được lên kế hoạch xóa sau 2. 3]. Vui lòng sử dụng lệnh phát sóng ping để thay thếbroker_url= "redis://:redXXX@8.136.181.55:6379/10"
Không thể nhập
35 vàbroker_url= "redis://:redXXX@8.136.181.55:6379/10"
CELERY_RESULT_EXCHANGE = 'celeryresults2'
7 từ
37 nữa, thay vào đó, vui lòng nhập chúng từbroker_url= "redis://:redXXX@8.136.181.55:6379/10"
38 [dự kiến ban đầu sẽ xóa sau 2. 4]broker_url= "redis://:redXXX@8.136.181.55:6379/10"
Các mô-đun không dùng nữa¶
Mô-đun
39 đã thay đổi trạng thái từ đang chờ phản đối sang không dùng nữa và được lên lịch xóa trong phiên bản 4. 0. Phải sử dụng mô-đunbroker_url= "redis://:redXXX@8.136.181.55:6379/10"
38 thay thếbroker_url= "redis://:redXXX@8.136.181.55:6379/10"
Tin tức¶
Hỗ trợ múi giờ¶
Cần tây hiện có thể được định cấu hình để coi tất cả các ngày đến và đi là UTC và múi giờ địa phương có thể được định cấu hình
Tính năng này chưa được bật theo mặc định, vì việc bật hỗ trợ múi giờ có nghĩa là các công nhân đang chạy các phiên bản trước 2. 5 sẽ không đồng bộ với các công nhân được nâng cấp
Để bật UTC, bạn phải đặt
celery -A celery_tasks.main worker -l info
91celery -A celery_tasks.main worker -l info
9Khi UTC được bật, ngày và giờ trong thông báo tác vụ sẽ được chuyển đổi thành UTC, sau đó được chuyển đổi trở lại múi giờ địa phương khi nhân viên nhận được
Bạn có thể thay đổi múi giờ địa phương bằng cài đặt
celery -A celery_tasks.main worker -l info
92. Nên cài đặt thư viện pytz khi sử dụng múi giờ tùy chỉnh, để luôn cập nhật định nghĩa múi giờ, nhưng nó sẽ dự phòng cho định nghĩa hệ thống của múi giờ nếu cóUTC sẽ được bật theo mặc định trong phiên bản 3. 0
Ghi chú
django-celery sẽ sử dụng múi giờ địa phương như được chỉ định bởi cài đặt
celery -A celery_tasks.main worker -l info
93, nó cũng sẽ tôn trọng cài đặt USE_TZ mới được giới thiệu trong Django 1. 4Bộ nối tiếp bảo mật mới sử dụng ký mã hóa¶
Một bộ nối tiếp mới đã được thêm vào để ký và xác minh chữ ký của thư
Tên của serializer mới là
celery -A celery_tasks.main worker -l info
94 và cần cấu hình bổ sung để hoạt động [xem Bảo mật ]. Xem thêm
Bảo vệ
Được đóng góp bởi Mher Movsisyan
Cài đặt CELERY_RESULT_EXCHANGE = 'celeryresults2'
1 mới¶
Cài đặt mới này cho phép cấu hình sửa đổi các lớp tác vụ và thuộc tính của chúng
Cài đặt có thể là một lệnh hoặc danh sách các đối tượng chú thích lọc các tác vụ và trả về bản đồ các thuộc tính để thay đổi
Ví dụ, đây là chú thích để thay đổi thuộc tính
celery -A celery_tasks.main worker -l info
96 cho tác vụ celery -A celery_tasks.main worker -l info
97# Celery
import djcelery
djcelery.setup_loader[]
INSTALLED_APPS += [
'south',
'userena',
'social_auth',
'djcelery',
]
BROKER_TRANSPORT = 'sqs'
BROKER_TRANSPORT_OPTIONS = {
'region': 'eu-west-1',
}
BROKER_USER = 'xyz'
BROKER_PASSWORD = 'zyx'
7hoặc thay đổi tương tự cho tất cả các nhiệm vụ
# Celery
import djcelery
djcelery.setup_loader[]
INSTALLED_APPS += [
'south',
'userena',
'social_auth',
'djcelery',
]
BROKER_TRANSPORT = 'sqs'
BROKER_TRANSPORT_OPTIONS = {
'region': 'eu-west-1',
}
BROKER_USER = 'xyz'
BROKER_PASSWORD = 'zyx'
8Bạn cũng có thể thay đổi các phương thức, ví dụ như trình xử lý
celery -A celery_tasks.main worker -l info
98@task
def upload[request, **kwargs]:
file = request.FILES['file']
ContactCSVModel.import_from_file[file]
return True
0Nếu bạn cần linh hoạt hơn thì bạn cũng có thể tạo các đối tượng lọc các tác vụ để chú thích
@task
def upload[request, **kwargs]:
file = request.FILES['file']
ContactCSVModel.import_from_file[file]
return True
1CELERY_RESULT_EXCHANGE = 'celeryresults2'
2 cung cấp tác vụ hiện đang thực thi¶
Proxy
# Celery
import djcelery
djcelery.setup_loader[]
INSTALLED_APPS += [
'south',
'userena',
'social_auth',
'djcelery',
]
BROKER_TRANSPORT = 'sqs'
BROKER_TRANSPORT_OPTIONS = {
'region': 'eu-west-1',
}
BROKER_USER = 'xyz'
BROKER_PASSWORD = 'zyx'
70 mới sẽ luôn cung cấp tác vụ hiện đang thực thiThí dụ
@task
def upload[request, **kwargs]:
file = request.FILES['file']
ContactCSVModel.import_from_file[file]
return True
4Trước đây, bạn phải nhập
# Celery
import djcelery
djcelery.setup_loader[]
INSTALLED_APPS += [
'south',
'userena',
'social_auth',
'djcelery',
]
BROKER_TRANSPORT = 'sqs'
BROKER_TRANSPORT_OPTIONS = {
'region': 'eu-west-1',
}
BROKER_USER = 'xyz'
BROKER_PASSWORD = 'zyx'
71 tại đây, điều này có thể gây khó chịu cho các tên nhiệm vụ dàiGhi chú
Điều này sẽ không hoạt động nếu chức năng tác vụ được gọi trực tiếp [tôi. e. ,
# Celery
import djcelery
djcelery.setup_loader[]
INSTALLED_APPS += [
'south',
'userena',
'social_auth',
'djcelery',
]
BROKER_TRANSPORT = 'sqs'
BROKER_TRANSPORT_OPTIONS = {
'region': 'eu-west-1',
}
BROKER_USER = 'xyz'
BROKER_PASSWORD = 'zyx'
72]. Để làm việc đó phải sử dụng # Celery
import djcelery
djcelery.setup_loader[]
INSTALLED_APPS += [
'south',
'userena',
'social_auth',
'djcelery',
]
BROKER_TRANSPORT = 'sqs'
BROKER_TRANSPORT_OPTIONS = {
'region': 'eu-west-1',
}
BROKER_USER = 'xyz'
BROKER_PASSWORD = 'zyx'
73. # Celery
import djcelery
djcelery.setup_loader[]
INSTALLED_APPS += [
'south',
'userena',
'social_auth',
'djcelery',
]
BROKER_TRANSPORT = 'sqs'
BROKER_TRANSPORT_OPTIONS = {
'region': 'eu-west-1',
}
BROKER_USER = 'xyz'
BROKER_PASSWORD = 'zyx'
74Trong những tin tức khác¶
Bây giờ phụ thuộc vào Kombu 2. 1. 0
Hỗ trợ Hợp âm hiệu quả cho phụ trợ Memcached [ Số phát hành #533 ]
Điều này có nghĩa là Memcached kết hợp với Redis trong khả năng thực hiện các hợp âm không bỏ phiếu
Đóng góp bởi Dan McGee
Thêm hỗ trợ Hợp âm cho phụ trợ kết quả Rabbit [amqp]
Chương trình phụ trợ kết quả Rabbit hiện có thể sử dụng giải pháp hợp âm dự phòng
Gửi
75 đến# Celery import djcelery djcelery.setup_loader[] INSTALLED_APPS += [ 'south', 'userena', 'social_auth', 'djcelery', ] BROKER_TRANSPORT = 'sqs' BROKER_TRANSPORT_OPTIONS = { 'region': 'eu-west-1', } BROKER_USER = 'xyz' BROKER_PASSWORD = 'zyx'
76 bây giờ sẽ khiến nó chấm dứt# Celery import djcelery djcelery.setup_loader[] INSTALLED_APPS += [ 'south', 'userena', 'social_auth', 'djcelery', ] BROKER_TRANSPORT = 'sqs' BROKER_TRANSPORT_OPTIONS = { 'region': 'eu-west-1', } BROKER_USER = 'xyz' BROKER_PASSWORD = 'zyx'
Đó là, nó sẽ không hoàn thành việc thực thi các tác vụ mà nó hiện đang thực hiện
Được đóng góp bởi Alec Clowes
Chế độ “chi tiết” mới cho phần phụ trợ Cassandra
Cho phép có chế độ “chi tiết” cho phần phụ trợ Cassandra. Về cơ bản, ý tưởng là giữ tất cả các trạng thái bằng cách sử dụng các cột rộng của Cassandra. Các trạng thái mới sau đó được thêm vào hàng dưới dạng các cột mới, trạng thái cuối cùng là cột cuối cùng
Xem cài đặt
77# Celery import djcelery djcelery.setup_loader[] INSTALLED_APPS += [ 'south', 'userena', 'social_auth', 'djcelery', ] BROKER_TRANSPORT = 'sqs' BROKER_TRANSPORT_OPTIONS = { 'region': 'eu-west-1', } BROKER_USER = 'xyz' BROKER_PASSWORD = 'zyx'
Đóng góp bởi Steeve Morin
Trình phân tích cú pháp Crontab hiện khớp với hành vi của Vixie Cron khi phân tích phạm vi theo các bước [e. g. , 1-59/2]
Được đóng góp bởi Daniel Hepper
78 hiện có thể được cấu hình trên dòng lệnh như# Celery import djcelery djcelery.setup_loader[] INSTALLED_APPS += [ 'south', 'userena', 'social_auth', 'djcelery', ] BROKER_TRANSPORT = 'sqs' BROKER_TRANSPORT_OPTIONS = { 'region': 'eu-west-1', } BROKER_USER = 'xyz' BROKER_PASSWORD = 'zyx'
76# Celery import djcelery djcelery.setup_loader[] INSTALLED_APPS += [ 'south', 'userena', 'social_auth', 'djcelery', ] BROKER_TRANSPORT = 'sqs' BROKER_TRANSPORT_OPTIONS = { 'region': 'eu-west-1', } BROKER_USER = 'xyz' BROKER_PASSWORD = 'zyx'
Cấu hình bổ sung phải được thêm vào cuối danh sách đối số, theo sau là
80, ví dụ:# Celery import djcelery djcelery.setup_loader[] INSTALLED_APPS += [ 'south', 'userena', 'social_auth', 'djcelery', ] BROKER_TRANSPORT = 'sqs' BROKER_TRANSPORT_OPTIONS = { 'region': 'eu-west-1', } BROKER_USER = 'xyz' BROKER_PASSWORD = 'zyx'
5@login_required def upload[request]: result = upload[request] if result: messages.add_message[request, messages.SUCCESS, 'Items have been added to the database.'] else: etc
Bây giờ giới hạn số lượng khung hình trong truy nguyên để
76 không gặp sự cố khi vượt quá giới hạn đệ quy tối đa, vượt quá các ngoại lệ [ Số phát hành #615 ].# Celery import djcelery djcelery.setup_loader[] INSTALLED_APPS += [ 'south', 'userena', 'social_auth', 'djcelery', ] BROKER_TRANSPORT = 'sqs' BROKER_TRANSPORT_OPTIONS = { 'region': 'eu-west-1', } BROKER_USER = 'xyz' BROKER_PASSWORD = 'zyx'
Giới hạn được đặt thành giới hạn đệ quy hiện tại chia cho 8 [theo mặc định là 125]
Để nhận hoặc đặt giới hạn đệ quy hiện tại, hãy sử dụng
82 và# Celery import djcelery djcelery.setup_loader[] INSTALLED_APPS += [ 'south', 'userena', 'social_auth', 'djcelery', ] BROKER_TRANSPORT = 'sqs' BROKER_TRANSPORT_OPTIONS = { 'region': 'eu-west-1', } BROKER_USER = 'xyz' BROKER_PASSWORD = 'zyx'
83# Celery import djcelery djcelery.setup_loader[] INSTALLED_APPS += [ 'south', 'userena', 'social_auth', 'djcelery', ] BROKER_TRANSPORT = 'sqs' BROKER_TRANSPORT_OPTIONS = { 'region': 'eu-west-1', } BROKER_USER = 'xyz' BROKER_PASSWORD = 'zyx'
Nhiều thông tin hiện được lưu giữ trong truy nguyên có thể ngâm được
Điều này đã được thêm vào để Sentry có thể hiển thị thêm chi tiết
Được đóng góp bởi Sean O'Connor
CentOS init-script đã được cập nhật và sẽ linh hoạt hơn
Được đóng góp bởi Andrew McFague
Phần phụ trợ kết quả MongoDB hiện hỗ trợ
84# Celery import djcelery djcelery.setup_loader[] INSTALLED_APPS += [ 'south', 'userena', 'social_auth', 'djcelery', ] BROKER_TRANSPORT = 'sqs' BROKER_TRANSPORT_OPTIONS = { 'region': 'eu-west-1', } BROKER_USER = 'xyz' BROKER_PASSWORD = 'zyx'
Được đóng góp bởi Andrew McFague
85 hiện tăng lại ngoại lệ ban đầu để giữ dấu vết ngăn xếp ban đầu# Celery import djcelery djcelery.setup_loader[] INSTALLED_APPS += [ 'south', 'userena', 'social_auth', 'djcelery', ] BROKER_TRANSPORT = 'sqs' BROKER_TRANSPORT_OPTIONS = { 'region': 'eu-west-1', } BROKER_USER = 'xyz' BROKER_PASSWORD = 'zyx'
Được đề xuất bởi @ojii
Đối số –uid cho daemon hiện sử dụng
86 để đặt nhóm cho tất cả các nhóm mà người dùng là thành viên của# Celery import djcelery djcelery.setup_loader[] INSTALLED_APPS += [ 'south', 'userena', 'social_auth', 'djcelery', ] BROKER_TRANSPORT = 'sqs' BROKER_TRANSPORT_OPTIONS = { 'region': 'eu-west-1', } BROKER_USER = 'xyz' BROKER_PASSWORD = 'zyx'
Được đóng góp bởi Łukasz Oleś
87. Đã thêm lệnh# Celery import djcelery djcelery.setup_loader[] INSTALLED_APPS += [ 'south', 'userena', 'social_auth', 'djcelery', ] BROKER_TRANSPORT = 'sqs' BROKER_TRANSPORT_OPTIONS = { 'region': 'eu-west-1', } BROKER_USER = 'xyz' BROKER_PASSWORD = 'zyx'
88# Celery import djcelery djcelery.setup_loader[] INSTALLED_APPS += [ 'south', 'userena', 'social_auth', 'djcelery', ] BROKER_TRANSPORT = 'sqs' BROKER_TRANSPORT_OPTIONS = { 'region': 'eu-west-1', } BROKER_USER = 'xyz' BROKER_PASSWORD = 'zyx'
Shell sẽ có current_app [
89] và tất cả các tác vụ sẽ tự động được thêm vào địa phương# Celery import djcelery djcelery.setup_loader[] INSTALLED_APPS += [ 'south', 'userena', 'social_auth', 'djcelery', ] BROKER_TRANSPORT = 'sqs' BROKER_TRANSPORT_OPTIONS = { 'region': 'eu-west-1', } BROKER_USER = 'xyz' BROKER_PASSWORD = 'zyx'
87. Đã thêm lệnh# Celery import djcelery djcelery.setup_loader[] INSTALLED_APPS += [ 'south', 'userena', 'social_auth', 'djcelery', ] BROKER_TRANSPORT = 'sqs' BROKER_TRANSPORT_OPTIONS = { 'region': 'eu-west-1', } BROKER_USER = 'xyz' BROKER_PASSWORD = 'zyx'
01@task def upload[request, **kwargs]: file = request.FILES['file'] ContactCSVModel.import_from_file[file] return True
Lệnh di chuyển chuyển tất cả các tác vụ từ nhà môi giới này sang nhà môi giới khác. Lưu ý rằng đây là thử nghiệm và bạn nên sao lưu dữ liệu trước khi tiếp tục
ví dụ
CELERY_RESULT_EXCHANGE = 'celeryresults2'
0
Các bộ định tuyến hiện có thể ghi đè
02 và@task def upload[request, **kwargs]: file = request.FILES['file'] ContactCSVModel.import_from_file[file] return True
03 được sử dụng để tạo hàng đợi bị thiếu [ Sự cố #577 ].@task def upload[request, **kwargs]: file = request.FILES['file'] ContactCSVModel.import_from_file[file] return True
Theo mặc định, điều này sẽ luôn sử dụng tên của hàng đợi, nhưng giờ đây bạn có thể có một bộ định tuyến return exchange và các khóa định tuyến_key để đặt chúng
Điều này hữu ích khi sử dụng các lớp định tuyến quyết định đích đến trong thời gian chạy
Contributed by Akira Matsuzaki
Redis kết quả phụ trợ. Thêm hỗ trợ cho tham số
04@task def upload[request, **kwargs]: file = request.FILES['file'] ContactCSVModel.import_from_file[file] return True
Giờ đây, có thể định cấu hình số lượng kết nối đồng thời tối đa trong nhóm kết nối Redis được sử dụng cho kết quả
Cài đặt kết nối tối đa mặc định có thể được định cấu hình bằng cài đặt
05 hoặc có thể thay đổi cài đặt này riêng lẻ bằng@task def upload[request, **kwargs]: file = request.FILES['file'] ContactCSVModel.import_from_file[file] return True
06@task def upload[request, **kwargs]: file = request.FILES['file'] ContactCSVModel.import_from_file[file] return True
Đóng góp bởi Steeve Morin
Redis kết quả phụ trợ. Thêm khả năng chờ kết quả mà không cần bỏ phiếu
Đóng góp bởi Steeve Morin
MongoDB phụ trợ kết quả. Hiện hỗ trợ lưu và khôi phục
07@task def upload[request, **kwargs]: file = request.FILES['file'] ContactCSVModel.import_from_file[file] return True
Được đóng góp bởi Julien Poissonnier
Có hướng dẫn Bảo mật mới trong tài liệu.
Các tập lệnh init đã được cập nhật và nhiều lỗi đã được sửa
Được đóng góp bởi Chris Streeter
Người dùng [dấu ngã] hiện được mở rộng trong đối số dòng lệnh
Bây giờ có thể định cấu hình biến môi trường
08 trong@task def upload[request, **kwargs]: file = request.FILES['file'] ContactCSVModel.import_from_file[file] return True
09@task def upload[request, **kwargs]: file = request.FILES['file'] ContactCSVModel.import_from_file[file] return True
Mặc dù không cần thiết cho hoạt động, celeryctl được sử dụng cho lệnh
10 và đường dẫn đến celeryctl phải được định cấu hình để lệnh đó hoạt động@task def upload[request, **kwargs]: file = request.FILES['file'] ContactCSVModel.import_from_file[file] return True
Cuốn sách nấu ăn daemonization chứa các ví dụ
Được đóng góp bởi Jude Nagurney
Phần phụ trợ kết quả MongoDB hiện có thể sử dụng Bộ bản sao
Được đóng góp bởi Ivan Metzlar
sự kiện. Hiện hỗ trợ tính năng tự động thay đổi quy mô [ Số phát hành #599 ].
Được đóng góp bởi Mark Lavin
đa xử lý. Chuỗi hòa giải hiện luôn được bật, ngay cả khi giới hạn tốc độ bị tắt, vì semaphore nhóm được biết là chặn chuỗi chính, khiến các lệnh quảng bá và tắt máy phụ thuộc vào semaphore được giải phóng
Sửa lỗi¶
Các ngoại lệ được nâng cấp lại với một đối tượng ngoại lệ mới hiện giữ nguyên dấu vết ngăn xếp ban đầu
các cửa sổ. Đã sửa lỗi cảnh báo
11@task def upload[request, **kwargs]: file = request.FILES['file'] ContactCSVModel.import_from_file[file] return True
các cửa sổ. Chương trình
76 hiện có thể được sử dụng# Celery import djcelery djcelery.setup_loader[] INSTALLED_APPS += [ 'south', 'userena', 'social_auth', 'djcelery', ] BROKER_TRANSPORT = 'sqs' BROKER_TRANSPORT_OPTIONS = { 'region': 'eu-west-1', } BROKER_USER = 'xyz' BROKER_PASSWORD = 'zyx'
Người dùng Windows trước đây phải khởi chạy
76 bằng cách sử dụng# Celery import djcelery djcelery.setup_loader[] INSTALLED_APPS += [ 'south', 'userena', 'social_auth', 'djcelery', ] BROKER_TRANSPORT = 'sqs' BROKER_TRANSPORT_OPTIONS = { 'region': 'eu-west-1', } BROKER_USER = 'xyz' BROKER_PASSWORD = 'zyx'
14@task def upload[request, **kwargs]: file = request.FILES['file'] ContactCSVModel.import_from_file[file] return True
Redis kết quả phụ trợ. Bây giờ sử dụng lệnh
15 để đặt khóa kết quả và hết hạn nguyên tử@task def upload[request, **kwargs]: file = request.FILES['file'] ContactCSVModel.import_from_file[file] return True
Được đề xuất bởi @yaniv-aknin
76. Đã khắc phục sự cố khi tắt máy bị treo khi Control-c được sử dụng để kết thúc# Celery import djcelery djcelery.setup_loader[] INSTALLED_APPS += [ 'south', 'userena', 'social_auth', 'djcelery', ] BROKER_TRANSPORT = 'sqs' BROKER_TRANSPORT_OPTIONS = { 'region': 'eu-west-1', } BROKER_USER = 'xyz' BROKER_PASSWORD = 'zyx'
76. Không còn bị treo khi xảy ra lỗi kênh# Celery import djcelery djcelery.setup_loader[] INSTALLED_APPS += [ 'south', 'userena', 'social_auth', 'djcelery', ] BROKER_TRANSPORT = 'sqs' BROKER_TRANSPORT_OPTIONS = { 'region': 'eu-west-1', } BROKER_USER = 'xyz' BROKER_PASSWORD = 'zyx'
Bản sửa lỗi do Roger Hu đóng góp
Đã sửa lỗi rò rỉ bộ nhớ trong nhóm sự kiện do sử dụng
18@task def upload[request, **kwargs]: file = request.FILES['file'] ContactCSVModel.import_from_file[file] return True
Bản sửa lỗi được đóng góp bởi Ignas Mikalajūnas
phụ trợ Cassandra. Không còn sử dụng
19 không được dùng nữa kể từ pycassa 1. 4@task def upload[request, **kwargs]: file = request.FILES['file'] ContactCSVModel.import_from_file[file] return True
Bản sửa lỗi do Jeff Terrace đóng góp
Đã sửa lỗi giải mã unicode có thể xảy ra khi gửi email lỗi
Bản sửa lỗi do Seong Wun Mun đóng góp
Các chương trình
40 hiện luôn xác định@task def upload[request, **kwargs]: file = request.FILES['file'] ContactCSVModel.import_from_file[file] return True
41 theo khuyến nghị của PEP-366@task def upload[request, **kwargs]: file = request.FILES['file'] ContactCSVModel.import_from_file[file] return True
42 hiện phát ra cảnh báo khi được sử dụng kết hợp với@task def upload[request, **kwargs]: file = request.FILES['file'] ContactCSVModel.import_from_file[file] return True
43 [ Sự cố #581 ].@task def upload[request, **kwargs]: file = request.FILES['file'] ContactCSVModel.import_from_file[file] return True
Được đóng góp bởi Mher Movsisyan
44 hiện chuyển tiếp các đối số từ khóa ban đầu tới@task def upload[request, **kwargs]: file = request.FILES['file'] ContactCSVModel.import_from_file[file] return True
73 khi bật# Celery import djcelery djcelery.setup_loader[] INSTALLED_APPS += [ 'south', 'userena', 'social_auth', 'djcelery', ] BROKER_TRANSPORT = 'sqs' BROKER_TRANSPORT_OPTIONS = { 'region': 'eu-west-1', } BROKER_USER = 'xyz' BROKER_PASSWORD = 'zyx'
43@task def upload[request, **kwargs]: file = request.FILES['file'] ContactCSVModel.import_from_file[file] return True
47 hiện cố gắng thiết lập lại kết nối nếu kết nối với nhà môi giới bị mất [ Sự cố #574 ].@task def upload[request, **kwargs]: file = request.FILES['file'] ContactCSVModel.import_from_file[file] return True
47. Đã khắc phục sự cố xảy ra nếu tác vụ không có thông tin nhân viên liên quan@task def upload[request, **kwargs]: file = request.FILES['file'] ContactCSVModel.import_from_file[file] return True
Bản sửa lỗi do Matt Williamson đóng góp
Ngày và giờ hiện tại được lấy nhất quán từ phương thức
49 của bộ tải hiện tại@task def upload[request, **kwargs]: file = request.FILES['file'] ContactCSVModel.import_from_file[file] return True
Hiện hiển thị thông báo lỗi hữu ích khi được cung cấp mô-đun cấu hình kết thúc bằng
50 không thể nhập được@login_required def upload[request]: result = upload[request] if result: messages.add_message[request, messages.SUCCESS, 'Items have been added to the database.'] else: etc
87. Các đối số# Celery import djcelery djcelery.setup_loader[] INSTALLED_APPS += [ 'south', 'userena', 'social_auth', 'djcelery', ] BROKER_TRANSPORT = 'sqs' BROKER_TRANSPORT_OPTIONS = { 'region': 'eu-west-1', } BROKER_USER = 'xyz' BROKER_PASSWORD = 'zyx'
52 và@login_required def upload[request]: result = upload[request] if result: messages.add_message[request, messages.SUCCESS, 'Items have been added to the database.'] else: etc
53 cho lệnh áp dụng giờ đây có thể là một chuỗi được định dạng ISO-8601@login_required def upload[request]: result = upload[request] if result: messages.add_message[request, messages.SUCCESS, 'Items have been added to the database.'] else: etc