使用RabbitMQ和WebSockets通知用户作业完成的最佳方式

2024-09-28 23:41:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用Yii2和Yii2队列扩展将RabbitMQ中的作业推送到某个队列中。 这些作业正在将xls | csv文件导入数据库。在作业结束时,我将消息发送到另一个队列—由PythonPika侦听,并通过websocket发送到客户机。在

php,作业代码,发送新消息

if (!empty($imported)) {

            $connection = new AMQPStreamConnection($queue->host, $queue->port, $queue->user, $queue->password);
            $channel = $connection->channel();

            $channel->queue_declare('import_queue', true, true, false, false);

            $message = 'Catalog, imported items: ' . count($imported);
            $message = new AMQPMessage($message, [
                'content_type' => 'text/plain',
                'delivery_mode' => AMQPMessage::DELIVERY_MODE_PERSISTENT
            ]);

            $channel->basic_publish(
                $message, '', 'import_queue'
            );

            $channel->close();
            $connection->close();
        }

python代码。

^{pr2}$

问题: 我不知道最后的工作什么时候能完成。 当用户发送文件时,我阻止html表单并应用加载程序图标。 我设置session var来阻止它。我想取消阻止表单,(删除加载程序)当所有作业将被执行,并通知用户“导入作业完成”。在

最好的办法是什么?谢谢。在


Tags: 文件代码importfalsetrue消息messagenew