Multipart POST работает с Python запросами, но не работает в Crawler - PullRequest
1 голос
/ 08 января 2020

У меня есть сканер, который принимает файлы PDF, и я хочу интегрировать его со службой, которая генерирует текст OCR из этих файлов PDF.

Я могу заставить его работать с запросами, но не с treq. Все примеры взяты из Scrapy Shell.

Это работает, возвращает правильное OCR json:

response = requests.post(endpoint,files=[('file', (fname, open(fpath,'rb'), 'application/pdf'))], data={'extract_method': 'raw'})

Тестирование, этот более простой код работает с treq:

In [28]: response = treq.get(endpoint)
In [29]: response.result
Out[29]: <treq.response._Response 200 'text/html; charset=utf-8' 30 bytes>
In [30]: response.result.text()
Out[30]: <Deferred at 0x164a14d7b38 current result: '<h1>PDF-OCR-Service Online<h1>'>

Пока это не работает, возвращается None:

In [25]: response = treq.post(endpoint,files=[('file', (fname, open(fpath,'rb'), b'application/pdf'))], data={'extract_method': 'raw'})
In [26]: response.result
Out[26]: <treq.response._Response 200 'application/json' 5 bytes>
In [27]: response.result.json()
Out[27]: <Deferred at 0x164a1443048 current result: None>

Похоже, файл, отправленный с помощью treq, пуст.

...