无法在Ubuntu服务器16.04中运行Django测试服务器

2024-06-26 13:38:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两台服务器。我正在尝试为我的主网站服务器设置一个持续集成

Web server 1(cloud-hosting):
Python3.6
Django3.1
Ubuntu16.04

Webserver 2(VPS):
Python3.7
Django3.1
Ubuntu16.04
Jenkins
--ShiningPanda(plugin) 

我是网络开发新手,所以如果我的网络服务器类型看起来很奇怪,那就是为什么。我一直在关注Python的测试驱动开发这本书。我的问题是,在运行python manage.py test [app]时,我的[app]继承自StaticLiveSever类以生成测试环境。在Web服务器1上,这可以正常工作。在WebServer2上,我得到一个错误,无法分配请求地址。我使用jenkins构建环境,但得到的错误是OSerror[99]:cannot assign requested address。当我在Web服务器1中运行相同的命令时,我不明白为什么会发生这种情况。它运行良好。尽管如此,这些命令还是由jenkins运行,并且jenkins被配置为运行python3.7

完全回溯(主要问题)

Traceback (most recent call last):
  File "/var/lib/jenkins/shiningpanda/jobs/ddc1aed1/virtualenvs/d41d8cd9/lib/python3.7/site-packages/django/test/testcases.py", line 1449, in setUpClass
    raise cls.server_thread.error
  File "/var/lib/jenkins/shiningpanda/jobs/ddc1aed1/virtualenvs/d41d8cd9/lib/python3.7/site-packages/django/test/testcases.py", line 1374, in run
    self.httpd = self._create_server()
  File "/var/lib/jenkins/shiningpanda/jobs/ddc1aed1/virtualenvs/d41d8cd9/lib/python3.7/site-packages/django/test/testcases.py", line 1389, in _create_server
    return ThreadedWSGIServer((self.host, self.port), QuietWSGIRequestHandler, allow_reuse_address=False)
  File "/var/lib/jenkins/shiningpanda/jobs/ddc1aed1/virtualenvs/d41d8cd9/lib/python3.7/site-packages/django/core/servers/basehttp.py", line 67, in __init__
    super().__init__(*args, **kwargs)
  File "/usr/lib/python3.7/socketserver.py", line 452, in __init__
    self.server_bind()
  File "/usr/lib/python3.7/wsgiref/simple_server.py", line 50, in server_bind
    HTTPServer.server_bind(self)
  File "/usr/lib/python3.7/http/server.py", line 137, in server_bind
    socketserver.TCPServer.server_bind(self)
  File "/usr/lib/python3.7/socketserver.py", line 466, in server_bind
    self.socket.bind(self.server_address)
OSError: [Errno 99] Cannot assign requested address

在硬编码主机之后

Traceback (most recent call last):
  File "/var/lib/jenkins/workspace/Superlists/functional_tests/base.py", line 47, in setUp
    self.browser = webdriver.Firefox()
  File "/var/lib/jenkins/shiningpanda/jobs/ddc1aed1/virtualenvs/d41d8cd9/lib/python3.7/site-packages/selenium/webdriver/firefox/webdriver.py", line 164, in __init__
    self.service.start()
  File "/var/lib/jenkins/shiningpanda/jobs/ddc1aed1/virtualenvs/d41d8cd9/lib/python3.7/site-packages/selenium/webdriver/common/service.py", line 100, in start
    self.assert_process_still_running()
  File "/var/lib/jenkins/shiningpanda/jobs/ddc1aed1/virtualenvs/d41d8cd9/lib/python3.7/site-packages/selenium/webdriver/common/service.py", line 113, in assert_process_still_running
    % (self.path, return_code)
selenium.common.exceptions.WebDriverException: Message: Service geckodriver unexpectedly exited. Status code was: 69

geckodriver.log,带有LiveTestServer中硬编码的主机ip

eckodriver: error: Address not available (os error 99)
geckodriver 0.27.0 (7b8c4f32cdde 2020-07-28 18:16 +0000) 
WebDriver implementation for Firefox

USAGE:
    geckodriver [FLAGS] [OPTIONS]

[...]

希望上面的回溯不会太混乱。另外,我注意到当im在webserver 2中时,我访问了Django testcases.py模块,该模块具有LiverServerThread和硬代码host=0.0.0.0,而不是host=localhost(第一次回溯)。然后建立连接,尽管问题在于geckodriver和同样的东西(第二次回溯)。我需要硬编码IP0.0.0.0才能建立连接,但是geckodriver只是在一个完全不同的位置(这里没有显示error.log)侦听,我假设是这样

因此,我希望至少能够建立一个连接来正确运行LiveServerThread类。然后试着用geckodriver解决这个问题。我也不确定我运行的服务器类型是否构成问题


Tags: inpyselfservervarliblinejobs