API возвращает пустой ответ данных после развертывания при повтореPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 API возвращает пустой ответ данных после развертывания при повторе

Сообщение Anonymous »

У меня есть простой бот Telegram, который извлекает данные из API и отправляет данные в Telegram в виде сообщения. URL-адрес API работает в любом браузере без каких-либо запросов и успешно работает с почтальоном. Мой код запускается и работает правильно в редакторе повторения, но при развертывании в повторении он возвращает пустые данные. Когда я просматриваю журналы, я вижу, что API возвращает 200. Но объект данных пуст. Я возился с заголовками и даже добавлял файлы cookie и т. д., но данные не возвращаются. Почему это могло быть?
Это URL-адрес API, который я вызываю: https://www.mexc.com/api/operateactivit ... ?kol=false
Изображение

А это мой коды;
import requests
import time from telegram
import Bot
import logging from flask import Flask

logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s %(levelname)s %(message)s',
handlers=[logging.FileHandler("app.log"), logging.StreamHandler()])

bot_token = '****'
chat_id = '****'
bot = Bot(token=bot_token)

headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/125.0.0.0 Safari/537.36',
'accept': 'application/json',
'accept-language': 'tr,en;q=0.9',
'referer': 'https://www.mexc.com/',
'Accept-Encoding': 'gzip, deflate, br',
'Connection': 'keep-alive'
}

def fetch_token_symbols():
url = 'https://www.mexc.com/api/operateactivit ... ?kol=false'
try:
logging.debug(f"Request URL: {url}")
logging.debug(f"Request Headers: {headers}")

response = requests.get(url, headers=headers)
response.raise_for_status() # Raise an error for bad status codes
logging.debug(f"API Response Status Code: {response.status_code}")
logging.debug(f"API Response Headers: {response.headers}")

data = response.json()
logging.debug(f"API Response Data: {data}")

if 'data' not in data:
logging.error("API response does not contain 'data' key")
return []

token_symbols = [{
'profitCurrency': item.get('profitCurrency', ''),
'profitCurrencyFullName': item.get('profitCurrencyFullName', ''),
'currencyType': item.get('currencyType', ''),
'contractAddress': item.get('contractAddress', '')
} for item in data.get('data', [])]

return token_symbols
except requests.exceptions.RequestException as e:
logging.error(f"Request failed: {e}")
return []
except ValueError as e:
logging.error(f"Response parsing failed: {e}")
return []

def send_token_list():
current_tokens = fetch_token_symbols()

if not current_tokens:
error_message = "API'den geçerli token listesi alınamadı."
bot.send_message(chat_id=chat_id, text=error_message)
logging.error(error_message)
return

messages = [
f"Token Sembolü: {token['profitCurrency']}\n"
f"Full Name: {token['profitCurrencyFullName']}\n"
f"Currency Type: {token['currencyType']}\n"
f"Contract Address: {token['contractAddress']}"
for token in current_tokens
]

message = "Güncellenmiş Token Listesi:\n\n" + "\n\n".join(messages)
bot.send_message(chat_id=chat_id, text=message)
logging.info("Güncellenmiş liste gönderildi.")

def start_periodic_task():
while True:
send_token_list()
time.sleep(60) # 1 minute delay

app = Flask(__name__)

@app.route('/')
def home():
return "Application is running!"

if __name__ == "__main__":
import threading
threading.Thread(target=start_periodic_task, daemon=True).start()
app.run(host='0.0.0.0', port=5000)


Подробнее здесь: https://stackoverflow.com/questions/786 ... -on-replit
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»