scrapydweb icon indicating copy to clipboard operation
scrapydweb copied to clipboard

settings_dict = dict(s.split('=') for s in settings_arguments.pop('setting')) ValueError: dictionary update sequence element #1 has length 4; 2 is required

Open 1yzz opened this issue 7 months ago • 3 comments

Describe the bug

500 (INTERNAL SERVER ERROR): 500 Internal Server Error: The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.

  • Request URL: http://192.168.5.122:5000/1/schedule/?task_id=24
  • Traceback:
Traceback (most recent call last):
  File "/root/env3.9/lib/python3.9/site-packages/flask/app.py", line 2051, in wsgi_app
    response = self.full_dispatch_request()
  File "/root/env3.9/lib/python3.9/site-packages/flask/app.py", line 1501, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/root/env3.9/lib/python3.9/site-packages/flask/app.py", line 1499, in full_dispatch_request
    rv = self.dispatch_request()
  File "/root/env3.9/lib/python3.9/site-packages/flask/app.py", line 1485, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args)
  File "/root/env3.9/lib/python3.9/site-packages/flask/views.py", line 83, in view
    return self.dispatch_request(*args, **kwargs)
  File "/root/env3.9/lib/python3.9/site-packages/scrapydweb/views/operations/schedule.py", line 78, in dispatch_request
    self.query_task()
  File "/root/env3.9/lib/python3.9/site-packages/scrapydweb/views/operations/schedule.py", line 105, in query_task
    settings_dict = dict(s.split('=') for s in settings_arguments.pop('setting'))
ValueError: dictionary update sequence element #1 has length 4; 2 is required

  • OS: Linux-3.10.0-1160.25.1.el7.x86_64-x86_64-with-glibc2.17
  • Python: 3.9.21
  • ScrapydWeb: 1.5.2
  • LogParser: 0.8.4
  • Scrapyd servers amount: 2
  • User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36
  • Request Method: GET
  • Request Args: ImmutableMultiDict([('task_id', '24')])
  • Form Data: ImmutableMultiDict([])
  • Files Data: ImmutableMultiDict([])
  • Request Referer: http://192.168.5.122:5000/1/tasks/

** To Reproduce**

-setting=mongourl://bcss?params1=sss&param2=xxx

The = symbol

Expected behavior A clear and concise description of what you expected to happen.

Logs Add logs of ScrapydWeb and Scrapyd (optional) when reproducing the bug. (It's recommended to run ScrapydWeb with argument '--verbose' if its version >= 1.0.0)

Screenshots If applicable, add screenshots to help explain your problem.

Environment (please complete the following information):

  • Operating system: [e.g. Win 10, macOS 10.14, Ubuntu 18, centOS 7.6, Debian 9.6 or Fedora 29]
  • Python version: [e.g. 3.6 or 3.12]
  • ScrapydWeb version: [e.g. 1.5.0 or latest code on GitHub]
  • ScrapydWeb related settings [e.g. 'ENABLE_AUTH = True']
  • Scrapyd version: [e.g. 1.2.1 or latest code on GitHub]
  • Scrapyd amount [e.g. 1 or 5]
  • Scrapy version: [e.g. 1.8.0, 2.0.0 or latest code on GitHub]
  • Browser [e.g. Chrome 71, Firefox 64 or Safari 12]

Additional context Add any other context about the problem here.

1yzz avatar Jul 20 '25 12:07 1yzz

董圣源已经收到您的来信~会尽快回复 谢谢This is Bruce Dong . I have received your letter and will answer you as soon as possible,Thanks. 

dataknower avatar Jul 20 '25 12:07 dataknower

Image

1yzz avatar Jul 20 '25 12:07 1yzz

https://github.com/my8100/scrapydweb/blob/1341cf93561f4bbf3ca387e51f7569674453452b/scrapydweb/views/operations/schedule.py#L105

Please update this line and try again.

    settings_dict = dict(s.split('=', 1) for s in settings_arguments.pop('setting'))

my8100 avatar Jul 20 '25 12:07 my8100