Python Django BaseCommand在本地工作,但在Amazon AWS EB上不工作
因此,我正在使用Amazon AWS EB+RDS数据库部署Django网站 除了我有一个脚本负责以编程的方式填充数据库外,它工作得很好。 我成功地让它在本地运行,遵循这一非常好且简短的教程: 因此,在本地,它的工作方式与预期相同 当我在AmazonAWSEB上运行这个脚本时(使用cron或手动激活我的env),我的问题就出现了 我收到以下错误消息:Python Django BaseCommand在本地工作,但在Amazon AWS EB上不工作,python,django,amazon-web-services,amazon-elastic-beanstalk,amazon-rds,Python,Django,Amazon Web Services,Amazon Elastic Beanstalk,Amazon Rds,因此,我正在使用Amazon AWS EB+RDS数据库部署Django网站 除了我有一个脚本负责以编程的方式填充数据库外,它工作得很好。 我成功地让它在本地运行,遵循这一非常好且简短的教程: 因此,在本地,它的工作方式与预期相同 当我在AmazonAWSEB上运行这个脚本时(使用cron或手动激活我的env),我的问题就出现了 我收到以下错误消息: ''' Traceback (most recent call last): File "/opt/python/run/venv/local
'''
Traceback (most recent call last):
File "/opt/python/run/venv/local/lib/python3.4/site-packages/django/db/backends/base/base.py", line 213, in ensure_connection
self.connect()
File "/opt/python/run/venv/local/lib/python3.4/site-packages/django/db/backends/base/base.py", line 189, in connect
self.connection = self.get_new_connection(conn_params)
File "/opt/python/run/venv/local/lib/python3.4/site-packages/django/db/backends/postgresql/base.py", line 176, in get_new_connection
connection = Database.connect(**conn_params)
File "/opt/python/run/venv/local/lib64/python3.4/site-packages/psycopg2/__init__.py", line 130, in connect
conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
psycopg2.OperationalError: could not connect to server: Connection refused
Is the server running on host "localhost" (127.0.0.1) and accepting
TCP/IP connections on port 5432?
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/opt/python/current/app/BetzCenter/manage.py", line 22, in <module>
execute_from_command_line(sys.argv)
File "/opt/python/run/venv/local/lib/python3.4/site-packages/django/core/management/__init__.py", line 363, in execute_from_command_line
utility.execute()
File "/opt/python/run/venv/local/lib/python3.4/site-packages/django/core/management/__init__.py", line 355, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/opt/python/run/venv/local/lib/python3.4/site-packages/django/core/management/base.py", line 283, in run_from_argv
self.execute(*args, **cmd_options)
File "/opt/python/run/venv/local/lib/python3.4/site-packages/django/core/management/base.py", line 330, in execute
output = self.handle(*args, **options)
File "/opt/python/bundle/18/app/BetzCenter/gamestream/management/commands/odds.py", line 444, in handle
self.create_gamepages(self.all_fixtures())
File "/opt/python/bundle/18/app/BetzCenter/gamestream/management/commands/odds.py", line 433, in create_gamepages
for fixture in fixtures:
File "/opt/python/run/venv/local/lib/python3.4/site-packages/django/db/models/query.py", line 250, in __iter__
self._fetch_all()
File "/opt/python/run/venv/local/lib/python3.4/site-packages/django/db/models/query.py", line 1118, in _fetch_all
self._result_cache = list(self._iterable_class(self))
File "/opt/python/run/venv/local/lib/python3.4/site-packages/django/db/models/query.py", line 53, in __iter__
results = compiler.execute_sql(chunked_fetch=self.chunked_fetch)
File "/opt/python/run/venv/local/lib/python3.4/site-packages/django/db/models/sql/compiler.py", line 882, in execute_sql
cursor = self.connection.cursor()
File "/opt/python/run/venv/local/lib/python3.4/site-packages/django/db/backends/base/base.py", line 254, in cursor
return self._cursor()
File "/opt/python/run/venv/local/lib/python3.4/site-packages/django/db/backends/base/base.py", line 229, in _cursor
self.ensure_connection()
File "/opt/python/run/venv/local/lib/python3.4/site-packages/django/db/backends/base/base.py", line 213, in ensure_connection
self.connect()
File "/opt/python/run/venv/local/lib/python3.4/site-packages/django/db/utils.py", line 94, in __exit__
six.reraise(dj_exc_type, dj_exc_value, traceback)
File "/opt/python/run/venv/local/lib/python3.4/site-packages/django/utils/six.py", line 685, in reraise
raise value.with_traceback(tb)
File "/opt/python/run/venv/local/lib/python3.4/site-packages/django/db/backends/base/base.py", line 213, in ensure_connection
self.connect()
File "/opt/python/run/venv/local/lib/python3.4/site-packages/django/db/backends/base/base.py", line 189, in connect
self.connection = self.get_new_connection(conn_params)
File "/opt/python/run/venv/local/lib/python3.4/site-packages/django/db/backends/postgresql/base.py", line 176, in get_new_connection
connection = Database.connect(**conn_params)
File "/opt/python/run/venv/local/lib64/python3.4/site-packages/psycopg2/__init__.py", line 130, in connect
conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
django.db.utils.OperationalError: could not connect to server: Connection refused
Is the server running on host "localhost" (127.0.0.1) and accepting
TCP/IP connections on port 5432?
'''
“”
回溯(最近一次呼叫最后一次):
文件“/opt/python/run/venv/local/lib/python3.4/site packages/django/db/backends/base/base.py”,第213行,在确保连接中
self.connect()
文件“/opt/python/run/venv/local/lib/python3.4/site packages/django/db/backends/base/base.py”,第189行,在connect中
self.connection=self.get_new_connection(连接参数)
文件“/opt/python/run/venv/local/lib/python3.4/site packages/django/db/backends/postgresql/base.py”,第176行,在get_new_connection中
连接=数据库。连接(**连接参数)
文件“/opt/python/run/venv/local/lib64/python3.4/site packages/psycopg2/_init__.py”,第130行,在connect中
连接=连接(dsn,连接工厂=连接工厂,**kwasync)
psycopg2.OperationalError:无法连接到服务器:连接被拒绝
服务器是否在主机“localhost”(127.0.0.1)上运行并接受
端口5432上的TCP/IP连接?
上述异常是以下异常的直接原因:
回溯(最近一次呼叫最后一次):
文件“/opt/python/current/app/BetzCenter/manage.py”,第22行,在
从命令行(sys.argv)执行命令
文件“/opt/python/run/venv/local/lib/python3.4/site packages/django/core/management/_init__uuuuuu.py”,第363行,从命令行执行
utility.execute()
文件“/opt/python/run/venv/local/lib/python3.4/site-packages/django/core/management/_-init__.py”,执行中第355行
self.fetch_命令(子命令)。从_argv(self.argv)运行_
文件“/opt/python/run/venv/local/lib/python3.4/site-packages/django/core/management/base.py”,第283行,从_argv开始运行
self.execute(*args,**cmd_选项)
文件“/opt/python/run/venv/local/lib/python3.4/site packages/django/core/management/base.py”,第330行,在execute中
输出=self.handle(*args,**选项)
文件“/opt/python/bundle/18/app/BetzCenter/gamestream/management/commands/locks.py”,第444行,在句柄中
self.create_游戏页面(self.all_fixture())
文件“/opt/python/bundle/18/app/BetzCenter/gamestream/management/commands/locks.py”,第433行,在创建游戏页面中
对于夹具中的夹具:
文件“/opt/python/run/venv/local/lib/python3.4/site packages/django/db/models/query.py”,第250行,在__
self._fetch_all()
文件“/opt/python/run/venv/local/lib/python3.4/site packages/django/db/models/query.py”,第1118行,全部
self.\u result\u cache=list(self.\u iterable\u class(self))
文件“/opt/python/run/venv/local/lib/python3.4/site packages/django/db/models/query.py”,第53行,在__
结果=编译器.execute\u sql(chunked\u fetch=self.chunked\u fetch)
文件“/opt/python/run/venv/local/lib/python3.4/site packages/django/db/models/sql/compiler.py”,第882行,在execute_sql中
cursor=self.connection.cursor()
光标中的文件“/opt/python/run/venv/local/lib/python3.4/site packages/django/db/backends/base/base.py”,第254行
返回自我。_cursor()
文件“/opt/python/run/venv/local/lib/python3.4/site packages/django/db/backends/base/base.py”,第229行,在光标处
self.sure_连接()
文件“/opt/python/run/venv/local/lib/python3.4/site packages/django/db/backends/base/base.py”,第213行,在确保连接中
self.connect()
文件“/opt/python/run/venv/local/lib/python3.4/site packages/django/db/utils.py”,第94行,在退出时__
6.重新播放(dj_exc_类型、dj_exc_值、回溯)
文件“/opt/python/run/venv/local/lib/python3.4/site-packages/django/utils/six.py”,第685行,在reraise中
通过_回溯(tb)提升值
文件“/opt/python/run/venv/local/lib/python3.4/site packages/django/db/backends/base/base.py”,第213行,在确保连接中
self.connect()
文件“/opt/python/run/venv/local/lib/python3.4/site packages/django/db/backends/base/base.py”,第189行,在connect中
self.connection=self.get_new_connection(连接参数)
文件“/opt/python/run/venv/local/lib/python3.4/site packages/django/db/backends/postgresql/base.py”,第176行,在get_new_connection中
连接=数据库。连接(**连接参数)
文件“/opt/python/run/venv/local/lib64/python3.4/site packages/psycopg2/_init__.py”,第130行,在connect中
连接=连接(dsn,连接工厂=连接工厂,**kwasync)
django.db.utils.OperationalError:无法连接到服务器:连接被拒绝
服务器是否在主机“localhost”(127.0.0.1)上运行并接受
端口5432上的TCP/IP连接?
'''
如果我手动将psycopg2代码与sql语句一起使用,脚本运行良好(在AWS EB上),但无法使用Django设置,我认为我在链接的教程之后添加了Django设置
不过,我真的希望能够对这个脚本使用django命令
关于如何调试这个有什么想法吗?
谷歌搜索目前对我帮助不大
更新-->我非常确定我的“普通”python脚本没有指向正确的数据库。事实上,我现在已经尝试打印它指向的数据库,我是对的。它没有指向我的AmazonRDS数据库(但查找本地数据库),而我的Django应用程序的其余部分则指向。我已经尝试了在stackoverflow上到处找到的解决方案。
我应该从哪里开始调试它?;)
谢谢!
维托里奥所以几个月后我又回到这个话题,并设法对它进行了分类。 我是一个变数的问题。 经过一些研究和尝试一些解决方案后,这对我来说是有效的: 我在crontab文件中添加了这个命令,在激活虚拟en后调用该命令
&& source /opt/python/current/env
0,30 * * * * source /opt/python/run/venv/bin/activate && source /opt/python/current/env && python /opt/python/current/app/my_site/manage.py my_command