xybu / onedrive-d-old

Microsoft OneDrive client on Linux.
http://xybu.me/projects/onedrive-d/
GNU Lesser General Public License v3.0
820 stars 143 forks source link

Doesn't download #197

Open matthewprenger opened 8 years ago

matthewprenger commented 8 years ago

When I start the program with onedrive-d start and then check onedrive-d status it is listed as sleeping and eventually reports that it is not running. When I run it with onedrive-d start --debug the log is constantly spammed with

[2016-02-08 22:10:25,590] INFO: MainThread: waken up by ThreadManager.
[2016-02-08 22:10:25,757] INFO: MainThread: network connection error.
[2016-02-08 22:10:25,757] INFO: MainThread: put to sleep due to networking error.
[2016-02-08 22:10:25,768] DEBUG: thread_mgr: able to realize "onedrive.com:80".

over and over again. No files get downloaded during this whole process.

Edit: also note the /var/log/onedrive_d.log file is empty.

lamarios commented 8 years ago

Same here.

jorik90 commented 8 years ago

Could you try my branch? I had the same issue and got it running with my branch. See https://github.com/jorik90/onedrive-d-old.

matthewprenger commented 8 years ago

@jorik90 Your's fails on onedrive-pref for me with:

Loading configuration ... OK
Traceback (most recent call last):
  File "/usr/local/bin/onedrive-pref", line 9, in <module>
    load_entry_point('onedrive-d==1.1.0dev', 'console_scripts', 'onedrive-pref')()
  File "/usr/local/lib/python3.4/dist-packages/onedrive_d-1.1.0dev-py3.4.egg/onedrive_d/od_pref.py", line 28, in main
  File "/usr/local/lib/python3.4/dist-packages/onedrive_d-1.1.0dev-py3.4.egg/onedrive_d/od_pref_cli.py", line 12, in <module>
  File "/usr/local/lib/python3.4/dist-packages/onedrive_d-1.1.0dev-py3.4.egg/onedrive_d/od_onedrive_api.py", line 31, in <module>
ImportError: cannot import name 'InsecureRequestWarning'
lamarios commented 8 years ago

I have the same issue with your branch, I already commented on your pull request. I'll try the solution you provided.

jorik90 commented 8 years ago

@matthewprenger could you try my branch with the solution provided on the pull request (commenting out two or three lines)?

jorik90 commented 8 years ago

@matthewprenger I added a try-except for those lines. Maybe it'll work without changes. Could you try it? What OS are you running it on?

matthewprenger commented 8 years ago

@jorik90 Ok got your branch up and running now. It seems to download fine, I'll report back if any issues arise. This is on a Debian 8 server.

matthewprenger commented 8 years ago

@jorik90 Ok so an update. After downloading almost 6GB, errors started getting thrown (I'm running onedrive-d with --debug).

[2016-02-17 16:49:11,908] ERROR: worker1: od_unexpected_exception
Traceback (most recent call last):
  File "/usr/local/lib/python3.4/dist-packages/onedrive_d-1.1.0dev-py3.4.egg/onedrive_d/od_worker_thread.py", line 442, in run
    self.sync_dir(task)
  File "/usr/local/lib/python3.4/dist-packages/onedrive_d-1.1.0dev-py3.4.egg/onedrive_d/od_worker_thread.py", line 78, in sync_dir
    remote_entries = self.api.list_entries(folder_id=task['remote_id'])
  File "/usr/local/lib/python3.4/dist-packages/onedrive_d-1.1.0dev-py3.4.egg/onedrive_d/od_onedrive_api.py", line 321, in list_entries
    return self.parse_response(r, OneDriveAPIException)['data']
  File "/usr/local/lib/python3.4/dist-packages/onedrive_d-1.1.0dev-py3.4.egg/onedrive_d/od_onedrive_api.py", line 123, in parse_response
    raise error(ret)
onedrive_d.od_onedrive_api.OneDriveAPIException: The request wasn't made because the same type of request was repeated too many times. Wait 24 seconds and try again. (request_throttled)

This stopped the download, and after waiting some time the following line is repeated over and over again in the console (seemingly to no end):

[2016-02-17 17:04:52,806] DEBUG: MainThread: added task "sy" "/home/matthew/OneDrive".

Seems to me that the OneDrive servers are rate-limiting the process and onedrive-d isn't able to fully recover when this happens.

lamarios commented 8 years ago

I have the same issue, it stops downloading and somehow i can't stop onedrive-d by using the command onedrive-d stop, I have to kill the process myself.

matthewprenger commented 8 years ago

Any news on this issue? Need to migrate a couple hundred gigabytes of data from OneDrive to a linux server. Haven't found any other practical options.

starrwang commented 8 years ago

You may first check your server's time is correct (the sync algo depends on UTC). Then you encountered rate limit error, you can check the error code and retry some time later (I did throw an exception and catch it, a bit nasty though) in od_onedrive_api, get() and get_by_blocks() implementations: r = self.http_client.get(OneDriveAPI.API_URI + entry_id + '/content', timeout=self.REQUEST_TIMEOUT) ... if ret['error']['code'] == 'server_busy': raise OneDriveServerBusyError(ret) if ret['error']['code'] == 'request_throttled': raise OneDriveRequestThrottledError(ret)