相关疑难解决方法(0)

我应该避免'async void'事件处理程序吗?

我知道使用fire-and-forget async void方法来启动任务通常被认为是一个坏主意,因为没有跟踪任务的跟踪,处理可能在这种方法中抛出的异常是很棘手的.

我一般应该避免使用async void事件处理程序吗?例如,

private async void Form_Load(object sender, System.EventArgs e)
{
        await Task.Delay(2000); // do async work
        // ...
} 
Run Code Online (Sandbox Code Playgroud)

我可以像这样重写它:

Task onFormLoadTask = null; // track the task, can implement cancellation

private void Form_Load(object sender, System.EventArgs e)
{
        this.onFormLoadTask = OnFormLoadTaskAsync(sender, e);
} 

private async Task OnFormLoadTaskAsync(object sender, System.EventArgs e)
{
        await Task.Delay(2000); // do async work
        // ...
} 
Run Code Online (Sandbox Code Playgroud)

除了可能的重入之外,异步事件处理程序的水下岩石是什么?

.net c# events asynchronous async-await

108
推荐指数
4
解决办法
4万
查看次数

pgBouncer如何帮助加速Django

我有一些基于gevent的管理命令.由于我的管理命令使成千上万的请求,我可以使用Gevent将所有套接字调用转换为非阻塞调用.这真的加快了我的应用程序,因为我可以同时提出请求.

目前我应用程序的瓶颈似乎是Postgres.这似乎是因为用于连接Django的Psycopg库是用C语言编写的,不支持异步连接.

我还读到使用pgBouncer可以将Postgres加速2倍.这听起来不错,但如果有人能解释pgBouncer如何工作和帮助会很棒吗?

谢谢

python django postgresql connection-pooling pgbouncer

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

PostgreSQL | 剩余的连接槽保留用于非复制超级用户连接

我在 PostgreSQL 实例之一收到错误“剩余连接槽为非复制超级用户连接保留”。

但是,当我从超级用户运行以下查询以检查可用连接时,我发现有足够的可用连接。但仍然得到同样的错误。

select max_conn,used,res_for_super,max_conn-used-res_for_super 
res_for_normal 
from 
  (select count(*) used from pg_stat_activity) t1,
  (select setting::int res_for_super from pg_settings where 
name='superuser_reserved_connections') t2,
  (select setting::int max_conn from pg_settings where name='max_connections') t3
Run Code Online (Sandbox Code Playgroud)

输出

在此处输入图片说明

我搜索了这个错误,每个人都建议像下面的链接一样增加最大连接数。 Heroku“psql:致命:剩余的连接槽是为非复制超级用户连接保留的”

编辑

我重新启动了服务器,一段时间后使用的连接数接近 210,但我能够从普通用户连接到服务器。

postgresql postgresql-9.6

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

Heroku"psql:FATAL:剩余的连接插槽保留用于非复制超级用户连接"

我收到运行Heroku Postgres Basic的上述错误消息(根据此问题),并一直在尝试诊断问题.

其中一个建议是使用连接池,但似乎Rails内置了它.另一个建议是应用程序配置不正确并打开太多连接.

我的应用程序通过Active Record管理它的所有连接,我从Navicat直接连接到数据库(或者至少我以为我有).

我该怎么调试呢?

解析度

事实证明这是一个Heroku问题.来自Heroku支持:

我们在运行Basic数据库的服务器上检测到了一个问题.虽然我们查明并解决了这个问题,但我们建议您配置一个新的Basic数据库并使用PGBackups进行迁移,详情请参见 https://devcenter.heroku.com/articles/upgrade-heroku-postgres-with-pgbackups .这应该将您的数据库放在新服务器上.我为这次中断道歉 - 我们正在努力解决这个问题并防止它在未来发生.

activerecord ruby-on-rails heroku

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

重启Heroku Postgres Dev DB

我从Play 2.0.3 java应用程序中收到此错误.我怎么能重新启动Heroku Postgres Dev DB?我找不到在Heroku帮助中心重启数据库的任何说明.

app[web.1]: Caused by: org.postgresql.util.PSQLException: FATAL: remaining connection slots are reserved for non-replication superuser connections
Run Code Online (Sandbox Code Playgroud)

postgresql heroku playframework-2.0

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