Асинхронизация узла-сельдерея, ожидание client.call() завершает свою внутреннюю функцию
Я использую node-celery 0.2.8 на моем сервере node.js, и я создаю, использую await на client.on(), надеясь, что код сначала будет поддерживать результаты журнала, а затем войдет "наконец". Но сначала консольный журнал кода 'наконец-то', а затем, после просмотра всего кода, вывод консольного журнала. Может ли кто-нибудь помочь мне позволить await работать на client.on()? Я просто надеюсь, что код может выполняться по порядку и ждать запроса асинхронизации.
async(ctx) => {
const client = celery.createClient({
CELERY_BROKER_URL: 'amqp://guest:guest@172.**.2.**:5672//',
CELERY_RESULT_BACKEND: 'redis://172.**.2.**:6379/2',
CELERY_ROUTES: {
'street.add_account_multi': {'queue': 'street_default'},
}
});
await client.on('connect', () => {
client.call('street.add_account_multi', [crawlers], function (result) {
console.log(result);
});
});
console.log('finally');
}
1 ответ
Пожалуйста, постарайтесь поместить свою операцию после события 'connect' в обещание, а затем дождитесь разрешения.
let clientConnect = new Promise((resolve, reject) => {
client.on('connect',() => {
client.call('street.add_account_multi', [crawlers], function(result) {
console.log(result);
resolve(result);
});
})
});
await clientConnect;
console.log('finally');