python - Requests/urllib 在 Flask/Apache/mod_wsgi/Windows 中不起作用

标签 python apache flask python-requests mod-wsgi

我有一个 Flask 应用程序,其中的代码可以处理来自托管在不同服务器上的另一个 Web 应用程序的请求的数据,并且它在开发中工作得很好,此外,可以很好地调用和使用处理请求的库来自 Windows 服务器中的 python...但是,当生产中的 web 应用程序使用 mod_wsgi 调用该库时,它拒绝工作,服务器发出的请求只是...超时。

我已经尝试了一切,从将我的代码移动到它所使用的文件,到从请求切换到 urllib...什么都没有,只要它们是由 mod_wsgi 发出的,我发出的所有请求都会超时。 这是为什么?这是我不知道的一些奇怪的 apache 配置吗?

我将在下面发布该库(抱歉,我必须对其进行一些审查,但我保证它有效)

import requests
import re


class CannotAccessServerException(Exception):
    pass

class ServerItemNotFoundException(Exception):
    pass


class Service():
    REQUEST_URL = "http://server-ip/url?query={query}&toexcel=csv"

    @classmethod
    def fetch_info(cls, query):
        # Get Approximate matches
        try:
            server_request = requests.get(cls.REQUEST_URL.format(query = query), timeout = 30).content
        except:
            raise CannotAccessServerException

        # If you're getting ServerItemNotFoundException or funny values consistently maybe the server has changed their tables.
        server_regex = re.compile('^([\d\-]+);[\d\-]+;[\d\-]+;[\d\-]+;[\d\-]+;[\-"\w]+;[\w"\-]+;{query};[\w"\-]+;[\w"\-]+;[\w"\-]+;[\w"\-]+;[\w\s:"\-]+;[\w\s"\-]+;[\d\-]+;[\d\-]+;[\d\-]+;([\w\-]+);[\w\s"\-]+;[\w\-]+;[\w\s"\-]+;[\d\-]+;[\d\-]+;[\d\-]+;([\w\-]+);[\d\-]+;[\d\-]+;[\w\-]+;[\w\-]+;[\w\-]+;[\w\-]+;[\w\s"\-]+$'.format(query = query), re.MULTILINE)

        server_exact_match = server_regex.search(server_request.decode())

        if server_exact_match is None:
            raise ServerItemNotFoundException


        result_json = {
            "retrieved1": server_exact_match.group(1),
            "retrieved2": server_exact_match.group(2),
            "retrieved3": server_exact_match.group(3)
        }

        return result_json


if __name__ == '__main__':
    print(Service.fetch_info(99999))

PS:我知道它会超时,因为我尝试的其中一件事是捕获 requests.get 引发的错误并返回其repr esentation。

最佳答案

如果有人想知道,经过大量研究,尝试将我的模块作为子进程运行以及各种实验,我不得不将我需要从远程服务器查询的整个数据集复制到我的数据库每周执行一次 crontab 任务,然后进行查询。

所以...是的,坦率地说,我没有解决方案,也没有解释为什么会发生这种情况。但如果这种情况发生在您身上,您最好的选择可能就是在您的服务器上复制整个数据集。

关于python - Requests/urllib 在 Flask/Apache/mod_wsgi/Windows 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52100377/

相关文章:

python - 更新二叉搜索树中的数据

apache - HTTP POST 中的各个字段是否有大小限制?

session - Flask –具有相同名称的多个 session Cookie

python - 无法连接到mysql容器由于2003(HY000): Can't connect to MySQL server on 'mysql:3307' 而无法创建表

python - 如何在 Django Models 中存储密文

python - 删除大表后 SQLite 数据库文件大小没有缩小

apache - 我需要以一秒的精度分析access.log

c++ - Apache 权限被拒绝连接到套接字

python - 模块未找到错误: No module named 'wtforms'

python - 将 Python/Flask 应用程序从 Heroku 迁移到 Azure 时出现 WSGI 错误