У меня есть приложение Flask с кодом, который обрабатывает данные, поступающие от запроса к другому веб-приложению, размещенному на другом сервере, и он отлично работает в процессе разработки, кроме того, библиотека, которая обрабатывает запрос, может быть прекрасно вызвана и использована из python на нашем сервере Windows ... Однако, когда библиотека вызывается веб-приложением в рабочей среде с использованием 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: я знаю, что время ожидания истекло, потому что я пытался отловить ошибку, вызванную request.get, и вернуть ее repr esentation.