小编Nix*_*xel的帖子

我们可以在nestjs中使用服务器发送的事件而不使用间隔吗?

我正在使用Nestjs创建一些微服务

例如,我有xyz服务,全部通过grpc互连,但我希望服务 x在特定实体更改时向 webapp 发送更新,因此我考虑了 server-sent-events [开放任何其他更好的解决方案]

按照nestjs文档,他们有一个以n间隔运行sse路由的函数,似乎是资源耗尽的。有没有办法在有更新时实际发送事件。

假设我在同一服务中有另一个 api 调用,该调用是通过单击另一个 web 应用程序上的按钮触发的,如何触发事件仅在单击按钮时触发,而不是连续不断地发送事件。另外,如果您知道任何惯用的方法来实现这一点,那么变得hacky将不胜感激,希望它成为最后的手段。

[奖金问题]

我还考虑过使用MQTT来发送事件。但我有一种感觉,单个服务不可能拥有MQTT 和 gRPC。我对使用 MQTT 持怀疑态度,因为它的延迟以及它将如何影响内部消息传递。如果我可以限制外部客户端,那就太好了(即,使用 gRPC 进行内部连接的 x 服务和用于 web 应用程序的 MQTT 只需要 mqtt 公开一条路由)。(PS ,我是微服务新手,所以请全面介绍您的解决方案:p)

预先感谢您阅读到最后!

server-sent-events mqtt microservices nestjs nestjs-gateways

9
推荐指数
2
解决办法
1万
查看次数

如何在QPlainTextEdit中更改选项卡的宽度

在PyQt5中使用QPlaintextEdit时,如果按Tab键盘上的按钮,将得到一个等于六个空格大小的制表符空格。但我希望它是四个空格的大小,以便在使用时:

TextEdit.setPlainTextEdit('\t')
Run Code Online (Sandbox Code Playgroud)

我应该缩进制表符空格,该空格一共只要四个空格。

我尝试使用四个空格代替制表符空格,但是随着代码变得越来越冗长,事情变得复杂了。

indentation python-3.x qplaintextedit pyqt5

4
推荐指数
1
解决办法
535
查看次数

如何在自定义装饰器中使用 NestJS Reflector?

我正在使用 a@SetMetaData('version', 'v2')为控制器中的 http 方法设置版本控制。然后我有一个自定义@Get()装饰器将版本作为后缀添加到控制器路由中。

/api/cats/v2/firstfive这样,当我有时,我就可以使用

@SetMetaData('version', 'v2')
@Get('firstfive')
Run Code Online (Sandbox Code Playgroud)

但我没有看到将 Reflector 注入到我的自定义 @Get 装饰器中的明确方法。

我的 Get 装饰器如下,

import { Get as _Get } from '@nestjs/common';
export function Get(path?: string) {
  version = /*this.reflector.get('version') or something similar */
  return applyDecorators(_Get(version+path));
}
Run Code Online (Sandbox Code Playgroud)

请帮帮我!谢谢!

javascript node.js nestjs

2
推荐指数
1
解决办法
1万
查看次数

如何在此文本编辑器中添加行号

这是我的文本编辑器代码,

import sys
from collections import Counter
from PyQt5.QtCore import pyqtRemoveInputHook
from PyQt5.QtWidgets import QMainWindow, QApplication, QAction
from PyQt5 import uic
Ui_MainWindow, QtBaseClass = uic.loadUiType('EditorUI.ui')

class MyApp(QMainWindow):
    def __init__(self):
        self.newLines = 1
        super(MyApp, self).__init__(None)
        menuBar = self.menuBar()
        fileMenu = menuBar.addMenu('&File')

        # New Action
        self.newAction = QAction('&New', self)
        self.newAction.triggered.connect(self.NewCall)
        fileMenu.addAction(self.newAction)
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.textEdit.setViewportMargins(35, 0, 0, 0)
        self.ui.textEdit.textChanged.connect(self.NumNewLines)

    def NumNewLines(self): # Returns Number of lines Of text written in the editor
        self.newLines = Counter(self.ui.textEdit.toPlainText())['\n']+1

    def NewCall(self):
        print('new')

if __name__ == …
Run Code Online (Sandbox Code Playgroud)

python pyqt python-3.x pyqt5

1
推荐指数
1
解决办法
2062
查看次数