Cursor(SQL) - 将网站部署到远程服务器后中断连接

时间:2018-05-13 19:14:33

标签: django postgresql nginx uwsgi

部署后我的网站(Django + NGINX + uwsgi)我的SQL连接有问题。当我第一次运行wscgi时,在退出之前的实例后,网站通过Web浏览器正确加载(SQL连接已建立,查询已执行,我得到一个结果)。转到下一个站点(应执行下一个查询)后,我收到如下错误:

[pid: 26143|app: 0|req: 1/1] 2001:470:70:f5f::2 () {58 vars in 1057 bytes} [Sun May 13 19:03:54 2018] GET /index/ => generated 270 bytes in 712 msecs (HTTP/1.0 200) 4 headers in 123 bytes (1 switches on core 0)
[pid: 26143|app: 0|req: 2/2] 2001:470:70:f5f::2 () {56 vars in 1044 bytes} [Sun May 13 19:04:07 2018] GET /accounts/login/ => generated 634 bytes in 41 msecs (HTTP/1.0 200) 7 headers in 380 bytes (1 switches on core 0)
[pid: 26143|app: 0|req: 3/3] 2001:470:70:f5f::2 () {60 vars in 1170 bytes} [Sun May 13 19:04:17 2018] POST /accounts/login/ => generated 0 bytes in 2570 msecs (HTTP/1.0 302) 9 headers in 531 bytes (1 switches on core 0)
Internal Server Error: /index/
Traceback (most recent call last):
  File "/root/Env/pyrat/lib/python3.5/site-packages/django/db/backends/utils.py", line 83, in _execute
    return self.cursor.execute(sql)
psycopg2.InterfaceError: cursor already closed

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/root/Env/pyrat/lib/python3.5/site-packages/django/core/handlers/exception.py", line 35, in inner
    response = get_response(request)
  File "/root/Env/pyrat/lib/python3.5/site-packages/django/core/handlers/base.py", line 128, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/root/Env/pyrat/lib/python3.5/site-packages/django/core/handlers/base.py", line 126, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/root/Env/pyrat/pyrat_server/views.py", line 28, in index
    dbquery.execute('SELECT * FROM users')
  File "/root/Env/pyrat/lib/python3.5/site-packages/django/db/backends/utils.py", line 68, in execute
    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
  File "/root/Env/pyrat/lib/python3.5/site-packages/django/db/backends/utils.py", line 77, in _execute_with_wrappers
    return executor(sql, params, many, context)
  File "/root/Env/pyrat/lib/python3.5/site-packages/django/db/backends/utils.py", line 85, in _execute
    return self.cursor.execute(sql, params)
  File "/root/Env/pyrat/lib/python3.5/site-packages/django/db/utils.py", line 89, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "/root/Env/pyrat/lib/python3.5/site-packages/django/db/backends/utils.py", line 83, in _execute
    return self.cursor.execute(sql)
django.db.utils.InterfaceError: cursor already closed
[pid: 26143|app: 0|req: 4/4] 2001:470:70:f5f::2 () {56 vars in 1079 bytes} [Sun May 13 19:04:20 2018] GET /index/ => generated 27 bytes in 784 msecs (HTTP/1.0 500) 4 headers in 126 bytes (1 switches on core 0)

数据库位于elephantSQL(Postgres)上。当我在localhost上尝试app时 - 没有问题。有没有人遇到过这类问题?

1 个答案:

答案 0 :(得分:0)

如果有人有类似的问题 - 在我的localhost上,一个与数据库的连接就足够了(在开头)。在此之后,我可以进行每个查询,并且连接没有问题。不幸的是,每次在查询之前,都要在远程主机(服务器)上建立与数据库的新连接。以下是我使用的代码:

  <Grid>

    <maps:Map x:Name="DisplayMap" IsShowingUser="true" MapType="Street" 
        HorizontalOptions="Fill" VerticalOptions="Fill"/>

    <StackLayout HorizontalOptions="Center" VerticalOptions="Center">
        <!-- SOME OTHER CONTROLS -->
    </StackLayout>

    <Image 
        Source="pin.png" 
        WidthRequest="50" HeightRequest="50"
        VerticalOptions="Center"
        HorizontalOptions="Center" 
        />
  </Grid>