GithubHelp home page GithubHelp logo

pavelk2 / crowdforge Goto Github PK

View Code? Open in Web Editor NEW

This project forked from borismus/crowdforge

0.0 2.0 0.0 147 KB

Django framework for crowdsourcing complex tasks using MTurk

Home Page: http://smus.com/crowdforge

Python 100.00%

crowdforge's Introduction

CrowdForge: Crowdsourcing Complex Work
(released for non-commercial use creativecommons.org/licenses/by-nc/3.0/)

Getting CrowdForge to run locally:

1. Prerequisites: python, django, boto (tested with python-2.7,
django-1.2.5 and boto-1.8d). Known issues with boto-1.9b.
  - NOTE: There's a bug in boto-1.8d that you need to tweak. 
    Change connection.py:466 to say
    
      value = self.connection.get_utf8_value(value)

    (instead of)

      value = self.get_utf8_value(value)

2. Download: go to https://github.com/borismus/CrowdForge and get the
tarball.
3. Extract: let's say to ~/crowdforge
4. Configure: tweak settings.py
  - specify AWS keys found at URL:
    https://aws-portal.amazon.com/gp/aws/developer/account/index.html?ie=UTF8&action=access-key
  - specify absolute URL to your templates directory
5. Create database: run ./manage.py syncdb, create new account
6. Run server: run ./manage.py runserver
7. Test! 
8. Setup cron jobs!

Testing CrowdForge

1. Point browser to localhost:8000/admin (or whatever your production
server URL is) and login.
2. Add a new Problem instance. Give it a name and these parameters
  - flow: SimpleFlow, 
  - partition: create article
  - map: collect a fact
  - reduce: write a paragraph
3. Run `./manage.py poll` manually, and a HIT should be created (check
the MTurk server)
  - expected output: 
4. Do a sample HIT from the new HIT group
5. Run `./manage.py poll` again, and a Result should be created locally
(look in db or check http://localhost:8000/turk/problem/YOUR_PROBLEM_ID)
  - expected output: results retrieved [<Result: Result for "Create an
    Article Ou... #141KMADQXJEYF9EQWEG9UA7S6J5JEW">]

Setting up Cron Jobs

0. Basically, you want to run `./manage.py poll` periodically
1. So just tweak your crontab
  - `crontab -e`
  - Create a line that says something like
  "*/15 * * * * /path/to/manage.py poll >> /path/to/crowdforge.log" 


Getting CrowdForge deployed on a production server:

1. Get CrowdForge running locally (as per instructions above)
2. Get django and crowdforge running on a public facing server
3. Tweak settings.py:
  - specify external URL of your server in settings.py
  - switch from sandbox to production
  - change the database engine to be mysql or postgresql
4. Resync database
5. Do a test
6. Setup cron jobs

Advanced: Make your own Hit Types

1. Open management console (localhost:8000/admin or whatever)
2. Add a new Hit Type.
3. Specify title, description and body. These fields can all be
parametrized, depending on your flow.

Advanced: Make your own flow

1. Open crowdforge/flows.py
2. Create your own subclass of Flow. See SimpleFlow for an example.
3. Don't forget to register your new flow using
  
  register('MyNewFlow', MyNewFlow)

crowdforge's People

Contributors

pavelk2 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.