Tôi đang làm việc trên một hệ thống nâng cấp phần mềm sử dụng cần tây. Tôi có một trường hợp sử dụng mà tôi đang đấu tranh để thực hiện sạch sẽ. Dưới đây là công việc của tôi:Kết hợp kết quả công việc trong cần tây
device_software_updates (DEVICE_ID)
returns a list of software updates that need to be installed on a device
installed_device_software (DEVICE_ID)
returns the software modules that are currently installed on a device
latest_device_software (DEVICE_ID)
returns the latest software versions available for a device
software_updates (installed_software, latest_software)
returns the latest software modules that are not installed
Trong trăn tinh khiết, việc thực hiện device_software_updates có thể trông như
def device_software_updates(device_id):
return software_updates(installed_device_software(device_id),
latest_device_software(device_id))
cách sạch để thực hiện điều này trong cần tây là gì 3.0? Tôi muốn làm một cái gì đó bằng cách sử dụng các nhóm. thực hiện hiện tại của tôi trông như thế này:
def device_software_updates(device_id):
return (
group(installed_device_software.s(device_id),
latest_device_software.s(device_id)) |
software_updates.s()
)()
Thật không may, điều này có nghĩa rằng argspec của software_updates là software_updates(arg_list)
mà không phải là lý tưởng.
Bạn sẽ không bao giờ gọi result.get() từ bên trong nhiệm vụ, bạn có thể bị bế tắc. http://celery.readthedocs.org/en/latest/_modules/celery/result.html. – rajat
@rajat bạn có thể cung cấp ví dụ chính xác không? – guival