gpt4 book ai didi

python - 通过cron执行时Django自定义管理命令报错

转载 作者:行者123 更新时间:2023-11-29 14:01:28 25 4
gpt4 key购买 nike

我有一个自定义命令来检查电子邮件帐户并下载和解析电子邮件。关于它的细节与这个问题无关。

当我从 shell 运行此命令时,例如:

cd /project_dir
./manage.py check_mail

每次都运行良好。当通过 crontab 执行相同的命令时,它返回一个奇怪的数据库错误:

django.db.utils.DatabaseError: SSL error: sslv3 alert bad record mac

它从代码的不同点返回异常。始终来自(非常简单的)选择查询。

crontab 条目非常简单:

*/5 * * * * cd /project_dir && ./manage.py check_mail

它由我登录用于上述测试的同一用户运行。

在使用 PostgreSQL 和 Django 之前,当从子进程运行查询时,我确实发现了这个“SSL 错误”,然后我通过关闭连接强制创建一个新连接来解决它,例如:

from django.db import connection
connection.close()

但在这种情况下它无济于事。 postgresql 日志没有添加太多信息:

2013-01-19 16:03:09 GMT LOG:  SSL error: decryption failed or bad record mac
2013-01-19 16:03:09 GMT LOG: could not receive data from client: Connection reset by peer
2013-01-19 16:03:09 GMT LOG: unexpected EOF on client connection

我使用的是 python 2.6 和 Django 1.4。这是其中一个错误的(几乎)完整回溯,但正如我所说,它并不总是从同一个查询中引发:

File "/project_dir/appname/checkmail.py", line 527, in get_message
message = object.message_set.all().order_by('-time')[0]

File "/usr/local/lib/python2.6/dist-packages/Django-1.4-py2.6.egg/django/db/models/query.py", line 207, in __getitem__
return list(qs)[0]

File "/usr/local/lib/python2.6/dist-packages/Django-1.4-py2.6.egg/django/db/models/query.py", line 87, in __len__
self._result_cache.extend(self._iter)

File "/usr/local/lib/python2.6/dist-packages/Django-1.4-py2.6.egg/django/db/models/query.py", line 291, in iterator
for row in compiler.results_iter():

File "/usr/local/lib/python2.6/dist-packages/Django-1.4-py2.6.egg/django/db/models/sql/compiler.py", line 763, in results_iter
for rows in self.execute_sql(MULTI):

File "/usr/local/lib/python2.6/dist-packages/Django-1.4-py2.6.egg/django/db/models/sql/compiler.py", line 818, in execute_sql
cursor.execute(sql, params)

File "/usr/local/lib/python2.6/dist-packages/Django-1.4-py2.6.egg/django/db/backends/postgresql_psycopg2/base.py", line 52, in execute
return self.cursor.execute(query, args)

django.db.utils.DatabaseError: SSL error: sslv3 alert bad record mac

有什么想法吗?

最佳答案

检查 crontab 是否正在运行相同版本的 python。我的 crontab 条目实际上如下所示:

*/10 * * * * cd /projectdir ; PYTHONPATH=/home/myhome/python/south:/home/myhome/python /usr/local/bin/python2.6 manage.py notify

关于python - 通过cron执行时Django自定义管理命令报错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14416173/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com