【问题标题】:Run "python manage.py runserver" from a bash script从 bash 脚本运行“python manage.py runserver”
【发布时间】:2011-09-16 04:16:23
【问题描述】:

我想从 bash 脚本运行“python manage.py runserver”

首先,如果我想从终端“python manage.py runserver &”运行,但它不起作用。我在 (https://code.djangoproject.com/changeset/16327) 中找到了解决方法。在终端中手动运行“python manage.py runserver &”可以正常工作。 我在 bash 脚本中添加了“python manage.py runserver &”,但它不会启动服务器。

Error:
File "/usr/local/lib/python2.7/dist-packages/Django-1.3-py2.7.egg/django/utils/autoreload.py", line 137, in main
    reloader(main_func, args, kwargs)
  File "/usr/local/lib/python2.7/dist-packages/Django-1.3-py2.7.egg/django/utils/autoreload.py", line 110, in python_reloader
    reloader_thread()
  File "/usr/local/lib/python2.7/dist-packages/Django-1.3-py2.7.egg/django/utils/autoreload.py", line 89, in reloader_thread
    ensure_echo_on()
  File "/usr/local/lib/python2.7/dist-packages/Django-1.3-py2.7.egg/django/utils/autoreload.py", line 77, in ensure_echo_on
    attr_list = termios.tcgetattr(fd)
termios.error: (25, 'Inappropriate ioctl for device')

【问题讨论】:

  • 为什么哦为什么不使用正常的部署机制...
  • 我想从 Hudson 的作业中运行此命令(添加构建步骤 -> 执行 shell)。服务器启动后运行nosetests
  • 那是错误的做法。单元测试——包括鼻子——应该使用代码中内置的测试服务器和客户端,而不是访问实际的开发服务器。
  • @Daniel 我的目标是让 Hudson 工作执行以下操作:从 SVN 更新源,启动 selenium 服务器 jar,运行服务器“python manage.py runserver”(这是我的问题),使用命令 nosetests --with-xunit --xunit-file=nosetests.xml 运行 Selenium 自动化测试

标签: python django bash selenium hudson


【解决方案1】:

问题可能是 hudson 没有以您的用户身份运行...您可以运行

source /home/your_user/.bashrc && django_serve 

让它运行该别名,但我认为您可能需要切换用户

-- 或--

让 hudson 从它自己的源结帐运行开发服务器

编辑:不过看看你的错误,我认为这可能会解决你的问题:

而不是

python manage.py runserver

尝试添加--noreload 标志以禁用自动重新加载器

python manage.py runserver --noreload

【讨论】:

  • 我已经完成了以下操作: 1. 添加 .bash_aliases alias django_server='python manage.py runserver --noreload &' (没有--noreload 选项我得到上述初始错误) 2. 复制 ~/.bash_aliases /var/lib /哈德森。 3. 在 Hudson 作业中(添加构建步骤 -> 执行 shell)添加 . /var/lib/hudson/.bash_aliasesdjango_server。服务器在后台运行,Selenium 测试正在使用鼻子测试运行。感谢您的回答。
【解决方案2】:

我使用别名来启动 django 服务器。可能会有所帮助)

只需在您的~/.bashrc~/.profile 末尾添加alias django_serve="python manage.py runserver &"

您还可以创建.bash_aliases 并将您的别名放入此文件并在执行任何操作之前执行它

if [ -f ~/.bash_aliases ]; then . ~/.bash_aliases fi

【讨论】:

  • 我在~/.bashrc 中添加了alias django_server="python manage.py runserver &" 并运行source ~/.bashrc。我从终端运行命令 django_server 并且工作正常。然后我完成了一个包含django_server 的bash 脚本,但它告诉我command not found
猜你喜欢
  • 2020-04-21
  • 1970-01-01
  • 2022-07-01
  • 2023-04-04
  • 2017-05-05
  • 2017-07-18
  • 1970-01-01
  • 1970-01-01
  • 2018-10-26
相关资源
最近更新 更多