Может ли код PythonAnywhere Free Account вызываться за пределами https Apis?

Я пишу телеграмм-бота для набора реляционных карточных игр и использую смесь вывода

Я могу запустить бота, и это здорово. Проблема в том, что когда я называю свой сайт www.relationalgames.com/cards/deck?Papo Papo, я получаю сообщение об ошибке:

Файл "/usr/local/lib/python3.10/site-packages/urllib3/util/retry.py", строка 592, с шагом поднять MaxRetryError(_pool, url, ошибка или ResponseError(причина)) urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='www.relationalgames.com', port=443): превышено максимальное количество попыток с URL: /cards?deck=Papo%20a%20Papo (вызвано NewCo nnectionError('<объект urllib3.connection.HTTPSConnection по адресу 0x7f46da0873a0>: не удалось установить новое соединение: [Errno 111] Отказано в соединении'))

Интересно, это какое-то ограничение бесплатной учетной записи PythonAnywhere, или я делаю что-то не так... Есть идеи, как это преодолеть?

Вот мой текущий код

import telepot
import json
import random
import urllib3
import time

# You can leave this bit out if you're using a paid PythonAnywhere account
proxy_url = "http://proxy.server:3128"
telepot.api._pools = {
    'default': urllib3.ProxyManager(proxy_url=proxy_url, num_pools=3, maxsize=10, retries=False, timeout=30),
}
telepot.api._onetime_pool_spec = (urllib3.ProxyManager, dict(proxy_url=proxy_url, num_pools=1, maxsize=1, retries=False, timeout=30))
# end of the stuff that's only needed for free accounts

http = urllib3.PoolManager(timeout=60)

def handle(msg):
    content_type, chat_type, chat_id = telepot.glance(msg)
    if content_type == 'text':
        if msg['text'] == '/start':
            bot.sendMessage(chat_id, "Enter the name of a deck:")
        else:
            #try:
                deck_name = msg['text']
                response = http.request('GET', f'https://www.relationalgames.com/cards?deck = {deck_name}') # requests.get(f'https://www.relationalgames.com/cards?deck = {deck_name}')
                print(response)
                playable_deck = json.loads(response.text)
                random.shuffle(playable_deck)

                while len(playable_deck) > 0:
                    card = playable_deck.pop()
                    if 'url' in card:
                        bot.sendMessage(chat_id, card['url'])
                    else:
                        bot.sendMessage(chat_id, card['cardText'])

                    if len(playable_deck) == 0:
                        bot.sendMessage(chat_id, "Do you want to restart the game? (yes or no)")
                        break

                    bot.sendMessage(chat_id, "Press any key for next card")
                    bot.getUpdates()
            #except:
             #   bot.sendMessage(chat_id, "Error processing your request")

TOKEN = 'My Token'
bot = telepot.Bot(TOKEN)
bot.message_loop(handle)

print ('Listening ...')

# Keep the program running.
while 1:
    time.sleep(10)
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
66
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Бесплатные учетные записи на PythonAnywhere имеют ограниченный доступ в Интернет к разрешенным общедоступным API (только HTTP(s)). Вы можете запросить добавление в белый список, если рассматриваемый сайт предоставляет общедоступный API с официальной документацией.

Да... в конце концов у меня все заработало (во всяком случае, временно) с платной версией PythonAnywhere.

MrWater 23.05.2023 14:20

Другие вопросы по теме