Как мне обновить переменную экземпляра с результатом после выполнения задачи сельдерея - PullRequest
0 голосов
/ 19 февраля 2019
  • У меня есть 2 класса, класс A с массивом, который подписывается на Redis-подписчик для непрерывного получения данных и должен запускаться в потоке.
  • Я хочу запустить задачу внутри подписчика, который извлекает что-то из внешнего API и добавляет этот элемент в массив обратно в класс A
  • Как мне сделать это в сельдерее?Любое направление будет оценено.

    class A(object):
    
        def __init__(self):
            self.items = []
    
        def on_subscribe(new_item):
            self.items.append(new_item)
            insert_data.delay(1544500000)
    
        # ???? how do I update the items array here from task results
        def update_items_from_task():
            pass
    
        # Configure with your own broker
        app = Celery("tasks", broker="redis://localhost:6379")
    
        @app.task
        def insert_data(timestamp):
            return requests.get(API_URL + '/' + timestsamp)
    
    
        @task_success.connect
        def on_task_complete(sender=None, result=None, **kwargs):
            print("task successful", result)
    
...