小编Cha*_*lie的帖子

在运行时检查托管服务器是IIS还是Kestrel在ASPNET Core中

我目前在Kestrel(本地)或IIS InProcess(生产)下运行我的应用程序。

return WebHost.CreateDefaultBuilder(args)
    .ConfigureKestrel(options => options.AddServerHeader = false)
    .UseIIS()
    .UseStartup<Startup>();
Run Code Online (Sandbox Code Playgroud)

我希望能够在运行时在控制器中获取托管服务器的名称,以便实现以下目标:

if (hostingServer == "kestrel")
{
    DoSomething();
}
else
{
    DoSomethingElse();
}
Run Code Online (Sandbox Code Playgroud)

在这种特定情况下,可以避免以下事实:Kestrel的响应标头中不支持非ascii字符。理想情况下,我将删除non-ascii标头,但目前它是传统互操作性所必需的。

任何帮助将不胜感激。

c# iis .net-core kestrel-http-server asp.net-core

7
推荐指数
3
解决办法
576
查看次数

SQLAlchemy Generic Relationship简单示例

我知道有类似的问题,但我真的很难理解SQLAlchemy中如何实现泛型字段.

我有一个Permissions类/表,我想包含一个可以与任何模型类型相关的字段.

我看过这些例子和这篇博客文章http://techspot.zzzeek.org/2007/05/29/polymorphic-associations-with-sqlalchemy/

是否可以在没有单独表的情况下拥有通用关系?只是存储object_type和id?这些方面的东西:

class Permission(AbstractBase):
    user = relationship("User", backref=backref('permissions'))
    permission_type = column(String())
    object = #The object the permission applies to, could be any type.
Run Code Online (Sandbox Code Playgroud)

我想只是一个非常简单的例子将不胜感激!

此外,值得注意的是我来自Django背景!

谢谢

python database sqlalchemy

6
推荐指数
2
解决办法
2019
查看次数

客户端连接后使用100%CPU的python asyncore

我正在使用asyncore来实现发布订阅.我理解使用twisted或ZMQ可能是一个更好的解决方案,但在这种情况下它需要是纯python.等待连接时,CPU使用率约为1%,一旦客户端连接CPU使用率跳转写入高达100%.即使客户端断开连接,它也不会降回.

我的服务器类:

class Host(asyncore.dispatcher):

    log = logging.getLogger('Host')

    def __init__(self, port=7655):
        asyncore.dispatcher.__init__(self)
        self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
        self.set_reuse_addr()
        self.bind(('0.0.0.0', port,))
        self.listen(5)
        self.clients = []

    def handle_accept(self):
        socket, addr = self.accept()
        self.log.info("Aceepted client at {0}:{1}".format(addr[0], addr[1]))
        self.clients.append(RemoteClient(self, socket, addr))

    def broadcast(self, message):
        self.log.info("Broadcasting message: {0}".format(message))
        for client in self.clients:
            client.message(message)
Run Code Online (Sandbox Code Playgroud)

我的经纪人:

class RemoteClient(asyncore.dispatcher):

    log = logging.getLogger('Host')

    def __init__(self, host, socket, address):
        asyncore.dispatcher.__init__(self, socket)
        self.host = host
        self.outbox = collections.deque()

    def message(self, message):
        self.outbox.append(message)

    def handle_write(self):
        if not self.outbox:
            return
        message = self.outbox.popleft()
        if len(message) > …
Run Code Online (Sandbox Code Playgroud)

python network-programming asyncore

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