从bash脚本中运行"python manage.py runserver"

6
我希望能够从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')

1
为什么不使用正常的部署机制呢? - Ignacio Vazquez-Abrams
我想从Hudson的作业中运行这个命令(添加构建步骤 -> 执行shell)。在服务器启动后运行nosetests。 - Sorin M
1
这是错误的做法。单元测试 - 包括 nose - 应该使用代码中内置的测试服务器和客户端,而不是访问实际的开发服务器。 - Daniel Roseman
1
@Daniel 我的目标是创建一个Hudson任务,该任务将执行以下操作:从SVN更新源代码,启动Selenium服务器jar包,运行服务器“python manage.py runserver”(这是我的问题),使用命令“nosetests --with-xunit --xunit-file=nosetests.xml”运行Selenium自动化测试。 - Sorin M
2个回答

6
问题可能是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/hudson。3. 在 Hudson 作业中(添加构建步骤 -> 执行 shell)添加 . /var/lib/hudson/.bash_aliasesdjango_server。服务器在后台运行,并使用 nosetests 运行 Selenium 测试。感谢您的回答。 - Sorin M

0

我使用别名启动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脚本,但它告诉我“找不到命令”。 - Sorin M

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接