Pracuję nad systemem aktualizacji oprogramowania przy użyciu selera. Mam przypadek użycia, który staram się wdrożyć w czysty sposób. Oto moje miejsca pracy:Łączenie wyników pracy w selerze
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
W czystej pytona, realizacja device_software_updates może wyglądać
def device_software_updates(device_id):
return software_updates(installed_device_software(device_id),
latest_device_software(device_id))
Co jest najczystszym sposobem wdrożenia tego w Seler 3.0? Chciałbym coś zrobić, używając grup. Moja obecna implementacja wygląda następująco:
def device_software_updates(device_id):
return (
group(installed_device_software.s(device_id),
latest_device_software.s(device_id)) |
software_updates.s()
)()
Niestety, oznacza to, że argspec z software_updates jest software_updates(arg_list)
który nie jest idealny.
Nigdy nie należy call result.get() od wewnątrz zadania, możesz uzyskać zakleszczenie. http://celery.readthedocs.org/en/latest/_modules/celery/result.html. – rajat
@rajat czy mógłbyś podać prawidłowy przykład? – guival