Найти - Пользователи
Полная версия: Не работает скрипт на хостинге (очень ВАЖНО)
Начало » Python для новичков » Не работает скрипт на хостинге (очень ВАЖНО)
1
fant59
Всем привет.
Просьба помочь разобраться с причиной не работающего скрипта на хостинге https://beget.com/ru.
Прикладываю сам файл скрипта.

Основная его цель скрипта:
1. сходить на сайт
2. сделать список ссылок url
3. записать список в файл.

Локально скрипт работает и все делает!
Но как его запускаю на хостинге, происходит просто создание и сохранение пустого файла.
Тех.поддержа хостинга разводит руками, и говорит обратиться к разработчику, но блин локально то все работает.

Вот отрывок ответа тех.поддержки. Обращу внимание, дабы не вводить в заблуждение,речь идет о другом скрипте, но смысл работы один и тот же, т.к. используются одинаковые модули и библиотеки.

"Как я сообщил ранее, согласно логу трассировку скрипт действительно подключается к серверу 104.20.208.69 и обменивается с ним каким-то данными.

 getpeername(4, {sa_family=AF_INET, sin_port=htons(443), sin_addr=inet_addr("104.20.208.69")}, [16]) = 0
write(4, "\26\3\1\2\0\1\0\1\374\3\3\2222\271A<\376\21\215\216\274\2170\t\7\31\373t\241\f\300*"..., 517) = 517
read(4, "\26\3\3\0;\2\0", 7)            = 7
read(4, "\0007\3\3[T\217\217\220l.\240|\0\306\t\307\307T\32=\375I\252\f\312\352\201\225\271\237\207"..., 57) = 57
read(4, "\26\3\3\v\214", 5)             = 5
read(4, "\v\0\v\210\0\v\205\0\4\0050\202\4\0010\202\3\247\240\3\2\1\2\2\21\0\3144\203\344\364\374"..., 2956) = 2956
read(4, "\26\3\3\0\225", 5)             = 5
read(4, "\f\0\0\221\3\0\27A\4\357\234\235mLu\26\376)\372_\205h\336[\223\303\363\244\16\370\320\260"..., 149) = 149
read(4, "\26\3\3\0\4", 5)               = 5
read(4, "\16\0\0\0", 4)                 = 4
write(4, "\26\3\3\0F\20\0\0BA\4,\332\353\244\n]\1\35\256H_\32C_\377Qz\225\257\306\310"..., 126) = 126
read(4, "\26\3\3\0\272", 5)             = 5
read(4, "\4\0\0\266\0\0\375 \0\260o\333\f+\33O\2513D\222\242\212\260\33\202\361\36447\371z,"..., 186) = 186
read(4, "\24\3\3\0\1", 5)               = 5
read(4, "\1", 1)                        = 1
read(4, "\26\3\3\0(", 5)                = 5
read(4, "\0\0\0\0\0\0\0\0007*j\221\300a\vH\256\26c\34K\326\35\4\343\215\352`2\222\333v"..., 40) = 40
ioctl(4, FIONBIO, [0])                  = 0
write(4, "\27\3\3\1\371!\\\366\224\327\16\265B\34Ah:\357\252\373\337\271O\3317\5\352\373Rp\275;"..., 510) = 510
write(4, "\27\3\3\0$!\\\366\224\327\16\265CB\220c:\202\352T{\237\220\276\322\305du\206!\22>"..., 41) = 41
ioctl(4, FIONBIO, [0])                  = 0
read(4, "\27\3\3\5q", 5)                = 5
read(4, "\0\0\0\0\0\0\0\1\301\23\253\33\241\3326\1\371\332\200;\310\351\34\356<\6\v$\26lb~"..., 1393) = 1393
read(4, "\27\3\3\5q", 5)                = 5
read(4, "\0\0\0\0\0\0\0\2Wg\244\222S\35\35\237\332\1\371,\346\212\243\353\321$\367\25\250\"\273\241"..., 1393) = 1393
read(4, "\27\3\3\5q", 5)                = 5
read(4, "\0\0\0\0\0\0\0\3PU\"\267\340r\25\"9\30\tQ\256\236K\273s\355\n)@\251Mz"..., 1393) = 1393
read(4, "\27\3\3\5q", 5)                = 5
read(4, "\0\0\0\0\0\0\0\4g\4\202\332\240\7\213\352\26\324\253\317?]\333,\212\22.\254P\356\35\201"..., 1393) = 1393
read(4, "\27\3\3\5q", 5)                = 5
read(4, "\0\0\0\0\0\0\0\5>\347\220O7m\257\204\341\203\322N\225\231%\260\272}\263WpK\204\361"..., 1393) = 1393
read(4, "\27\3\3\5q", 5)                = 5
read(4, "\0\0\0\0\0\0\0\6W\211\25\313\257\352\rG\311=v>\v\264]kz&<c\2402\ts"..., 1393) = 1393
read(4, "\27\3\3\5q", 5)                = 5
read(4, "\0\0\0\0\0\0\0\7\365\236>\t\303\271\266h\333;?\266\307QPfs\247\33\324d\f\357\246"..., 1393) = 1393
read(4, "\27\3\3\5q", 5)                = 5

Затем соединение закрывается и начинается обработка результатов обмена. На это косвенное указывает выделение памяти в процессе работы скрипта.

 mmap(NULL, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f3efe95a000
brk(0x578a000)                          = 0x578a000
mmap(NULL, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f3efe91a000
brk(0x57ab000)                          = 0x57ab000
mmap(NULL, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f3efe8da000
brk(0x57cc000)                          = 0x57cc000
mmap(NULL, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f3efe89a000
brk(0x57ed000)                          = 0x57ed000
brk(0x580e000)                          = 0x580e000
mmap(NULL, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f3efe85a000
brk(0x582f000)                          = 0x582f000
mmap(NULL, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f3efe81a000
brk(0x5850000)                          = 0x5850000
mmap(NULL, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f3efe3ec000
brk(0x5871000)                          = 0x5871000
mmap(NULL, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f3efe3ac000
brk(0x5892000)                          = 0x5892000
mmap(NULL, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f3efe36c000
brk(0x58b3000)                          = 0x58b3000
mmap(NULL, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f3efe32c000

Далее на запись открывается файл out.json.

 open("out.json", O_WRONLY|O_CREAT|O_TRUNC|O_CLOEXEC, 0666) = 4
fstat(4, {st_mode=S_IFREG|0600, st_size=0, ...}) = 0
ioctl(4, TCGETS, 0x7fff6818d0a8)        = -1 ENOTTY (Inappropriate ioctl for device)
lseek(4, 0, SEEK_CUR)                   = 0
lseek(4, 0, SEEK_CUR)                   = 0
lseek(4, 0, SEEK_CUR)                   = 0
write(4, "[]", 2)                       = 2
close(4)                                = 0

Который пытается получить доступ к файлу устройства, в данном случае TCGETS - это последовательный порт или, скорее терминал, и после того, как это сделать не удается, в файл пишется пустой массив и он закрывается. С описание вызова ioctl можно ознакомиться в сети, например http://www.opennet.ru/man.shtml?category=2&topic=ioctl и https://www.opennet.ru/docs/RUS/lkmpg/node18.html. С полный strace-логом в файле python.log в корне аккаунта. Аналогичное поведение наблюдается и при запуске через консоль. Мы не являемся разработчиками, но также удалось установить, что переменная data в строке 952 формируется пустой или не формируется совсем и в файл out.json записывается . В данном случае можем лишь рекомендовать обратиться к разработчику скрипта."

P.S. Большая просьба помочь, что нужно сделать, чтобы скрипт работал на хостинге.
DamMercul
Такое ощущение что вам поручили это сделать за деньги и вы решили схитрить.
fant59
Обращу внимание, дабы не вводить в заблуждение,речь идет о другом скрипте, но смысл работы один и тот же, т.к. используются одинаковые модули и библиотеки.
Факт того, что используются одни и те же модули не делает эти скрипты одинаковыми, что мешало приложить полный скрипт?
fant59
Локально скрипт работает и все делает!
Но как его запускаю на хостинге, происходит просто создание и сохранение пустого файла.
Не пойму, в чем проблема то? Если в локалке все работает, и у хостинга есть подключение к инету, то тогда все норм должно быть. и да, пример. У PythonAnywere для бесплатных аккаунтов есть ограничения для доступа в Интернет. Проверь r.text, тот ли этот сайт, проверь r.status_code и все-все. Сделай принт всего что есть. После каждого действия делай принт всех результатов, даже тех, которые уже известны. В питоне нету официального debub мода, так что делаем все своими ручками.

P.S. Не относится к делу, но после запроса лучше делать r.close(), все-таки подключение остается, не хорошо так)

Ждуу подробности
py.user.next
fant59
Прикреплённый файлы:
А где код на питоне, который создаёт out.json ?
fant59
DamMercul
Такое ощущение что вам поручили это сделать за деньги и вы решили схитрить.
r.text - проверяли, он работает на основе lxml - с ним проблем нет.
Глючит бьютифулсуп по какой-то не понятной причине.
JOHN_16
а что вам мешает отдебажить код прямо на сервере? pdb, ipdb и тп инструменты подходят для этого.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB